Welcome to AA+, a collection of freeware C++ classes which provide an implementation of the algorithms as presented in the book "Astronomical Algorithms" (2nd Edition) by Jean Meeus.
Example areas covered include the positions of the planets, comets, minor planets and the moon, calculation of times of Rising, Setting and Transit, calculation of times of Equinoxes and Solstices plus calculation of the positions of the moons of Jupiter and Saturn as well as many other algorithms presented in the book.
Features |
Usage |
Copyright |
History |
Class Framework Reference |
Planned Enhancements |
References |
Contacting the Author |
V1.0 (6 February 2004)
V1.01 (9 February 2004)
V1.02 (9 February 2004)
V1.03 (14 February 2004)
V1.04 (21 February 2004)
V1.05 (22 February 2004)
V1.06 (22 February 2004)
27 April 2004
v1.07 (24 May 2004)
v1.08 (31 May 2004)
v1.09 (15 June 2004)
6 September 2004
v1.10 (17 September 2004)
v1.11 (15 October 2004)
v1.12 (10 November 2004)
v1.13 (31 December 2004)
v1.14 (21 January 2005)
v1.15 (30 January 2005)
v1.16 (31 January 2005)
v1.17 (1 February 2005)
v1.18 (21 April 2005)
v1.19 (13 May 2005)
v1.20 (2 June 2005)
v1.21 (3 June 2005)
v1.22 (5 July 2005)
v1.23 (16 November 2005)
1 May 2006
v1.24 (12 May 2006)
18 May 2006
v1.25 (5 June 2006)
23 October 2006
v1.26 (29 November 2006)
v1.27 (17 January 2007)
v1.28 (25 January 2007)
v1.29 (26 January 2007)
v1.30 (29 January 2007)
v1.31 (26 July 2008)
v1.32 (11 November 2008)
v1.33 (7 February 2009)
v1.34 (12 February 2009)
v1.35 (16 March 2009)
v1.36 (28 March 2009)
The framework consists of the following classes:
This class provides for calculation of the effects of aberration. This refers to Chapter 23 in the book.
Functions this class provides include:
static CAA3DCoordinate EarthVelocity(double JD)
Return Value
3D rectangular heliocentric equatorial velocity of the Earth based on the fixed equator and equinox of FK5 for the epoch J2000.0.
Parameters
JD The date in Dynamical time to calculate for.
CAAAberration::EclipticAberration
static CAA2DCoordinate EclipticAberration(double Lambda, double Beta, double JD)
Return Value
Returns the correction due to aberration. The X value will contain the ecliptic longitude correction in degrees and Y will contain the ecliptic latitude correction in degrees.
Parameters
Lambda The ecliptic longitude in degrees.
Beta The ecliptic latitude in degrees.
JD The date in Dynamical time to calculate for.
CAAAberration::EquatorsialAberration
static CAA2DCoordinate EquatorialAberration(double Alpha, double Delta, double JD)
Return Value
Returns the correction due to aberration. The X value will contain the right ascension correction expressed as an hour angle and Y will contain the declination correction in degrees.
Parameters
Alpha The right ascension expressed as an hour angle.
Delta The declination in degrees.
JD The date in Dynamical time to calculate for.
This class provides the algorithms which obtain various separation distances between celestial objects. This refers to Chapter 17, 19 & 20 in the book.
Functions this class provides include:
CAAAngularSeparation::Separation
static double Separation(double Alpha1, double Delta1, double Alpha2, double Delta2)
Return Value
Returns the distance between the two positions in degrees.
Parameters
Alpha1 The first right ascension expressed as an hour angle.
Delta1 The first declination in degrees
Alpha2 The second right ascension expressed as an hour angle.
Delta2 The second declination in degrees
CAAAngularSeparation::PositionAngle
static double PositionAngle(double Alpha1, double Delta1, double Alpha2, double Delta2)
Return Value
Returns the position angle of (Alpha1, Delta1) relative to (Alpha2, Delta2) in degrees.
Parameters
Alpha1 The first right ascension expressed as an hour angle.
Delta1 The first declination in degrees
Alpha2 The second right ascension expressed as an hour angle.
Delta2 The second declination in degrees
CAAAngularSeparation::DistanceFromGreatArc
static double DistanceFromGreatArc(double Alpha1, double Delta1, double Alpha2, double Delta2, double Alpha3, double Delta3)
Return Value
Returns the distance of (Alpha3, Delta3) to the great circle (Alpha1, Delta1) - (Alpha2, Delta2) in degrees.
Parameters
Alpha1 The first right ascension expressed as an hour angle.
Delta1 The first declination in degrees
Alpha2 The second right ascension expressed as an hour angle.
Delta2 The second declination in degrees
Alpha3 The third right ascension expressed as an hour angle.
Delta3 The third declination in degrees
CAAAngularSeparation::SmallestCircle
static double SmallestCircle(double Alpha1, double Delta1, double Alpha2, double Delta2, double Alpha3, double Delta3, bool& bType1)
Return Value
Returns the diameter of the smallest circle encompassing the 3 points in degrees.
Parameters
Alpha1 The first right ascension expressed as an hour angle.
Delta1 The first declination in degrees
Alpha2 The second right ascension expressed as an hour angle.
Delta2 The second declination in degrees
Alpha3 The third right ascension expressed as an hour angle.
Delta3 The third declination in degrees
bType1 Upon return will be true if the smallest circle is of type 1, otherwise false, implying smallest circle is of type 2.
This class provides for calculation of the position of a Binary Star system. This refers to Chapter 57 in the book.
Functions this class provides include:
static CAABinaryStarDetails Calculate(double t, double P, double T, double e, double a, double i, double omega, double w)
Return Value
A class containing
r The radius vector of the component in arc seconds of a degree.
Theta The apparent position angle in degrees.
Rho The angular separation between the two components arc seconds of a degree.
Parameters
t The time given in years and decimals to perform the calculation for
P The period of revolution expressed in mean solar years.
T The time of periastron passage given in years and decimals.
e Eccentricity of the true orbit.
a The semi major axis expressed in seconds of a degree.
i The inclination of the plane of the true orbit in degrees to the plane at right angles to the line of sight.
omega The position angle of the ascending node in degrees
w The longitude of the periastron in degrees.
CAABinaryStar::ApparentEccentricty
static double ApparentEccentricity(double e, double i, double w)
Return Value
The apparent eccentricity of the binary star orbit
Parameters
e Eccentricity of the true orbit.
i The inclination of the plane of the true orbit in degrees to the plane at right angles to the line of sight.
w The longitude of the periastron in degrees.
This class provides for the transformations of the coordinates as well as helper angle methods. This refers to Chapter 13 and parts of Chapter 1 in the book.
Functions this class provides include:
CAACoordinateTransformation::Equatorial2Ecliptic
static CAA2DCoordinate Equatorial2Ecliptic(double Alpha, double Delta, double Epsilon)
Return Value
Returns the converted ecliptic coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the ecliptic longitude in degrees and the y value corresponds to the ecliptic latitude in degrees.
Parameters
Alpha The right ascension expressed as an hour angle.
Delta The declination in degrees.
Epsilon The obliquity of the ecliptic in degrees.
Remarks
The transformation of coordinates from Equatorial to Ecliptic. This refers to algorithm 13.1 and 13.2 on page 93.
CAACoordinateTransformation::Ecliptic2Equatorial
static CAA2DCoordinate Ecliptic2Equatorial(double Lambda, double Beta, double Epsilon)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the equatorial longitude in hours and the y value corresponds to the equatorial latitude in degrees.
Parameters
Lambda The ecliptic longitude in degrees.
Beta The ecliptic latitude in degrees.
Epsilon the obliquity of the ecliptic in degrees.
Remarks
The transformation of coordinates from Ecliptic to Equatorial. This refers to algorithm 13.3 and 13.4 on page 93.
CAACoordinateTransformation::Equatorial2Horizontal
static CAA2DCoordinate Equatorial2Horizontal(double LocalHourAngle, double Delta, double Latitude)
Return Value
Returns the converted horizontal coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the azimuth in degrees and the y value corresponds to the altitude in degrees.
Parameters
LocalHourAngle The local hour angle, measured westwards from the South.
Delta The declination in degrees.
Latitude The standard latitude of the position in degrees.
Remarks
The transformation of coordinates from Equatorial to Horizontal. This refers to algorithm 13.5 and 13.6 on page 93.
CAACoordinateTransformation::Horizontal2Equatorial
static CAA2DCoordinate Horizontal2Equatorial(double A, double h, double Latitude)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the equatorial longitude in hours and the y value corresponds to the equatorial latitude in degrees.
Parameters
A The azimuth in degrees.
h The altitude in degrees
Latitude The standard latitude of the position in degrees.
Remarks
The transformation of coordinates from Horizontal to Equatorial. This refers to the two algorithms on the top of page 94.
CAACoordinateTransformation::Equatorial2Galactic
static CAA2DCoordinate Equatorial2Galactic(double Alpha, double Delta)
Return Value
Returns the converted galactic coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the galactic longitude in degrees and the y value corresponds to the galactic latitude in degrees.
Parameters
Alpha The right ascension expressed as an hour angle.
Delta The declination in degrees.
Remarks
The transformation of coordinates from Equatorial to Galactic. This refers to algorithm 13.7 and 13.8 on page 94.
CAACoordinateTransformation::Galactic2Equatorial
static CAA2DCoordinate Galactic2Equatorial(double l, double b)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the equatorial longitude in hours and the y value corresponds to the equatorial latitude in degrees.
Parameters
l The galactic longitude expressed in degrees.
b The galactic latitude expressed in degrees.
Remarks
The transformation of coordinates from Galactic to Equatorial. This refers to the last two algorithms on page 94.
CAACoordinateTransformation::PI
static double PI()
Return Value
Returns the constant value of pi i.e 3.1415926...
CAACoordinateTransformation::DegreesToRadians
static double DegreesToRadians(double Degrees)
Return Value
Returns the value in radians which was converted from degrees.
Parameters
Degrees The angular value to convert measured in degrees.
CAACoordinateTransformation::RadiansToDegrees
static double RadiansToDegrees(double Radians)
Return Value
Returns the value in degrees which was converted from radians.
Parameters
Radians The angular value to convert measured in radians.
CAACoordinateTransformation::RadiansToHours
static double RadiansToHours(double Radians)
Return Value
Returns the value expressed as an hour angle which was converted from radians.
Parameters
Radians The angular value to convert measured in radians.
CAACoordinateTransformation::HoursToRadians
static double HoursToRadians(double Hours)
Return Value
Returns the value in radians which was converted from hours.
Parameters
Hours The numeric value to convert measured in hours.
CAACoordinateTransformation::HoursToDegrees
static double HoursToDegrees(double Hours)
Return Value
Returns the value in degrees which was converted from hours.
Parameters
Hours The numeric value to convert measured in hours.
CAACoordinateTransformation::DegreesToHours
static double DegreesToHours(double Degrees)
Return Value
Returns the value in hours which was converted from degrees.
Parameters
Degrees The angular value to convert measured in degrees.
CAACoordinateTransformation::DMSToDegrees
DMSToDegrees(double Degrees, double Minutes, double Seconds, bool bPositive = true)
Return Value
Returns the value in degrees which was converted from degrees, minutes and seconds.
Parameters
Degrees The degree part of the angular value to convert.
Minutes The minute part of the angular value to convert.
Seconds The second part of the angular value to convert.
bPositive true if the input value corresponds to a non-negative value with false implying the value is positive
Remarks
To convert the angle 21° 44' 07" you would use DMSToDegrees(21, 44, 7, true).
To convert the angle -12° 47' 22" you would use DMSToDegrees(12, 47, 22, false) or DMSToDegrees(-12, -47, -22, true).
To convert the angle -0° 32' 41" you must use DMSToDegrees(0, 32, 41, false).
CAACoordinateTransformation::MapTo0To360Range
static double MapTo0To360Range(double Degrees)
Return Value
Maps an arbitrary angular value to the range 0 to 360. i.e. inputting the value -2 will return a value of 258.
Parameters
Degrees The angular value.
CAACoordinateTransformation::MapTo0To24Range
static double MapTo0To24Range(double HourAngle)
Return Value
Maps an arbitrary value to the range 0 to 24. i.e. inputting the value -2 will return a value of 22.
Parameters
HourAngle The hour angle.
This class provides the algorithms which convert between the Gregorian and Julian calendars and the Julian Day. This refers to Chapter 7 and parts of Chapter 9 in the book.
Functions this class provides include:
CAADate()
CAADate(long Year, long Month, double Day, bool bGregorianCalendar)
CAADate(long Year, long Month, double Day, double Hour, double Minute, double Second, bool bGregorianCalendar)
CAADate(double JD, bool bGregorianCalendar)
Parameters
Year The year. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year (1 for January to 12 for December).
Day The day of the month (Can include decimals).
Hour The hour (Can include decimals).
Minute The minute (Can include decimals).
Second The seconds (Can include decimals).
JD The Julian day including decimals.
bGregorianCalendar true to imply a date in the Gregorian Calendar, false means use the Julian Calendar.
Remarks
Constructs a date given a variety of parameters.
static bool IsLeap(long Year, bool bGregorianCalendar)
Return Value
true if the specified year is leap otherwise false.
Parameters
Year The year. (Years are counted astronomically i.e. 1 BC = Year 0)
bGregorianCalendar true to imply a date in the Gregorian Calendar, false means use the Julian Calendar.
double Julian() const
Return Value
Returns the underlying Julian Day including decimals.
operator double() const
Return Value
Returns the underlying Julian Day including decimals.
long Day() const
Return Value
Returns the day of the month this date represents.
long Month() const
Return Value
Returns the month (1 - 12) this date represents.
long Year() const
Return Value
Returns the year this date represents.
long Hour() const
Return Value
Returns the hour this date represents.
long Minute() const
Return Value
Returns the minute this date represents.
double Second() const
Return Value
Returns the seconds this date represents.
void Set(long Year, long Month, double Day, double Hour, double Minute, double Second, bool bGregorianCalendar)
void Set(double JD, bool bGregorianCalendar)
Parameters
Year The year. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year (1 for January to 12 for December).
Day The day of the month (Can include decimals).
Hour The hour (Can include decimals).
Minute The minute (Can include decimals).
Second The seconds (Can include decimals).
JD The Julian day including decimals
bGregorianCalendar true to imply a date in the Gregorian Calendar, false means use the Julian Calendar.
Remarks
Allows the date to be modified after construction.
CAADate::SetInGregorianCalendar
void SetInGregorianCalendar(bool bGregorianCalendar)
Parameters
bGregorianCalendar true to imply a date in the Gregorian Calendar, false means use the Julian Calendar.
Remarks
Allows the date's calendar type to be changed after construction.
bool InGregorianCalendar() const
Return Value
Returns true if this date is in the Gregorian calendar, false means the Julian Calendar.
void Get(long& Year, long& Month, long& Day, long& Hour, long& Minute, double& Second)
Parameters
Year Upon return will contain the year. (Years are counted astronomically i.e. 1 BC = Year 0)
Month Upon return will contain the month of the year (1 for January to 12 for December).
Day Upon return will contain the day of the month.
Hour Upon return will contain the hour.
Minute Upon return will contain the minute.
Second Upon return will contain the seconds (Can include decimals).
Remarks
Allows the date parts to be retrieved.
DAY_OF_WEEK DayofWeek() const
Return Value
Returns an enum which identifies which day of the week this date represents.
double DayofYear() const
Return Value
Returns the day of year (including decimals) this date represents.
long DaysInMonth() const
static DaysInMonth(long Month, bool bLeap)
Return Value
Returns the total number of days in the month (28 - 31) which this date represents. The static version of the function can be used if you do not want to construct a CAADate instance to do this test.
long DaysInYear() const
Return Value
Returns the total number of days in the year (365 or 366) which this date represents.
CAADate::DayOfYearToDayAndMonth
static DayOfYearToDayAndMonth(long DayOfYear, bool bLeap, long& DayOfMonth, long& Month)
Parameters
DayOfYear The day of the year where 1st of January is 1 going up to 365 or 366 for 31st of December
bLeap true if the year being considered is a leap year, otherwise false.
DayOfMonth Upon return will contain the day of the month.
Month Upon return will contain the month.
static CAACalendarDate JulianToGregorian(long Year, long Month, long Day)
Return Value
A class containing
Year The year in the Gregorian Calendar. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year in the Gregorian Calendar (1 for January to 12 for December).
Day The day of the month in the Gregorian Calendar.
Parameters
Year The year in the Julian Calendar to convert. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year in the Julian Calendar (1 for January to 12 for December).
Day The day of the month in the Julian Calendar.
Remarks
Converts a calendrical date expressed in the Julian Calendar to the equivalent date in the Gregorian Calendar. It is assumed that the adoption of the Gregorian Calendar occurred in 1582.
static CAACalendarDate GregorianToJulian(long Year, long Month, long Day)
Return Value
A class containing
Year The year in the Julian Calendar. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year in the Julian Calendar (1 for January to 12 for December).
Day The day of the month in the Julian Calendar.
Parameters
Year The year in the Gregorian Calendar to convert. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year in the Gregorian Calendar (1 for January to 12 for December).
Day The day of the month in the Gregorian Calendar.
Remarks
Converts a calendrical date expressed in the Gregorian Calendar to the equivalent date in the Julian Calendar.
bool Leap() const
Return Value
true if the year which this date represents is leap otherwise false.
double FractionalYear() const
Return Value
Returns the years with decimals this date represents e.g. the middle of the year 2000 would be returned as 2000.5.
This class provides the algorithms for the semi diameters of the Sun, Moon, Planets and Asteroids. This refers to Chapter 55 in the book.
Functions this class provides include:
JupiterEquatorialSemidiameterA
ApparentSaturnPolarSemidiameterA
JupiterEquatorialSemidiameterB
ApparentSaturnPolarSemidiameterB
CAADiameters::SunSemidiameterA
static double SunSemidiameterA(double Delta)
Return Value
The suns semi diameter in arc seconds.
Parameters
Delta The distance to the Sun in astronomical units.
CAADiameters::MercurySemidiameterA
static double MercurySemidiameterA(double Delta)
Return Value
Mercury's semi diameter in arc seconds.
Parameters
Delta The distance to Mercury in astronomical units.
CAADiameters::VenusSemidiameterA
static double VenusSemidiameterA(double Delta)
Return Value
Venus's semi diameter in arc seconds.
Parameters
Delta The distance to Venus in astronomical units.
CAADiameters::MarsSemidiameterA
static double MarsSemidiameterA(double Delta)
Return Value
Mars's semi diameter in arc seconds.
Parameters
Delta The distance to Mars in astronomical units.
CAADiameters::JupiterEquatorialSemidiameterA
static double JupiterEquatorialSemidiameterA(double Delta)
Return Value
Jupiter's equatorial semi diameter in arc seconds.
Parameters
Delta The distance to Jupiter in astronomical units.
CAADiameters::JupiterPolarSemidiameterA
static double JupiterPolarSemidiameterA(double Delta)
Return Value
Jupiter's polar semi diameter in arc seconds.
Parameters
Delta The distance to Jupiter in astronomical units.
CAADiameters::SaturnEquatorialSemidiameterA
static double SaturnEquatorialSemidiameterA(double Delta)
Return Value
Saturn's equatorial semi diameter in arc seconds.
Parameters
Delta The distance to Saturn in astronomical units.
CAADiameters::SaturnPolarSemidiameterA
static double SaturnPolarSemidiameterA(double Delta)
Return Value
Saturn's polar semi diameter in arc seconds.
Parameters
Delta The distance to Saturn in astronomical units.
CAADiameters::ApparentSaturnPolarSemidiameterA
static double ApparentSaturnPolarSemidiameterA(double Delta, double B)
Return Value
Saturn's polar semi diameter in arc seconds.
Parameters
Delta The distance to Saturn in astronomical units.
B The Saturnicentric latitude of the Earth in degrees.
Remarks
Due to the large inclinations of Saturn, the apparent polar semi diameter can be different to the true polar semi diameter.
CAADiameters::UranusSemidiameterA
static double UranusSemidiameterA(double Delta)
Return Value
Uranus's semi diameter in arc seconds.
Parameters
Delta The distance to Uranus in astronomical units.
CAADiameters::NeptuneSemidiameterA
static double NeptuneSemidiameterA(double Delta)
Return Value
Neptune's semi diameter in arc seconds.
Parameters
Delta The distance to Neptune in astronomical units.
CAADiameters::MercurySemidiameterB
static double MercurySemidiameterB(double Delta)
Return Value
Mercury's semi diameter in arc seconds.
Parameters
Delta The distance to Mercury in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::VenusSemidiameterB
static double VenusSemidiameterB(double Delta)
Return Value
Venus's semi diameter in arc seconds.
Parameters
Delta The distance to Venus in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::MarsSemidiameterB
static double MarsSemidiameterB(double Delta)
Return Value
Mars's semi diameter in arc seconds.
Parameters
Delta The distance to Mars in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::JupiterEquatorialSemidiameterB
static double JupiterEquatorialSemidiameterB(double Delta)
Return Value
Jupiter's equatorial semi diameter in arc seconds.
Parameters
Delta The distance to Jupiter in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::JupiterPolarSemidiameterB
static double JupiterPolarSemidiameterB(double Delta)
Return Value
Jupiter's polar semi diameter in arc seconds.
Parameters
Delta The distance to Jupiter in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::SaturnEquatorialSemidiameterB
static double SaturnEquatorialSemidiameterB(double Delta)
Return Value
Saturn's equatorial semi diameter in arc seconds.
Parameters
Delta The distance to Saturn in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::SaturnPolarSemidiameterB
static double SaturnPolarSemidiameterB(double Delta)
Return Value
Saturn's polar semi diameter in arc seconds.
Parameters
Delta The distance to Saturn in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::ApparentSaturnPolarSemidiameterB
static double ApparentSaturnPolarSemidiameterB(double Delta, double B)
Return Value
Saturn's polar semi diameter in arc seconds.
Parameters
Delta The distance to Saturn in astronomical units.
B The Saturnicentric latitude of the Earth in degrees.
Remarks
Due to the large inclinations of Saturn, the apparent polar semi diameter can be different to the true polar semi diameter. Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::UranusSemidiameterB
static double UranusSemidiameterB(double Delta)
Return Value
Uranus's semi diameter in arc seconds.
Parameters
Delta The distance to Uranus in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::NeptuneSemidiameterB
static double NeptuneSemidiameterB(double Delta)
Return Value
Neptune's semi diameter in arc seconds.
Parameters
Delta The distance to Neptune in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::PlutoSemidiameterB
static double PlutoSemidiameterB(double Delta)
Return Value
Pluto's semi diameter in arc seconds.
Parameters
Delta The distance to Pluto in astronomical units.
Remarks
Uses the updated Astronomical Almanac for 1984 size.
CAADiameters::GeocentricMoonSemidiameter
static double GeocentricMoonSemidiameter(double Delta)
Return Value
The Moon's semi diameter in arc seconds.
Parameters
Delta The distance to the Moon in kilometres.
CAADiameters::TopocentricMoonSemidiameter
static double TopocentricMoonSemidiameter(double DistanceDelta, double Delta, double H, double Latitude, double Height)
Return Value
The Moon's semi diameter in arc seconds.
Parameters
DistanceDelta The distance to the Moon in kilometres.
Delta The geocentric declination of the Moon in degrees.
H The geocentric hour angle of the Moon.
Latitude The latitude of the position in degrees.
Height The observer's height above sea level in meters
CAADiameters::AsteroidDiameter
static double AsteroidDiameter(double H, double A)
Return Value
The asteroid's diameter in kilometres.
Parameters
H The absolute magnitude of the asteroid.
A The albedo of the asteroid.
CAADiameters::ApparentAsteroidDiameter
static double ApparentAsteroidDiameter(double Delta, double d)
Return Value
The asteroid's apparent diameter in arc seconds.
Parameters
Delta The distance to the asteroid in astronomical units.
d The diameter of the asteroid in kilometres.
This class provides for conversion between Universal Time and Dynamical Time. This refers to Chapter 10 in the book.
Functions this class provides include:
static double DeltaT(double JD)
Return Value
the difference DeltaT which is equal to TD - UT in seconds of time.
Parameters
date The Julian day calculate DeltaT for. Because DeltaT changes so slowly, the time used can be in the TD or the UT timeframe.
This class provides for calculation of the heliocentric position of the Earth. This refers to Chapter 32 and parts of Chapter 26 and 47 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAEarth::EclipticLongitudeJ2000
static double EclipticLongitudeJ2000(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of J2000 in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
CAAEarth::EclipticLatitudeJ2000
static double EclipticLatitudeJ2000(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of J2000 defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double Eccentricity(double JD)
Return Value
the eccentricity of Earth's orbit.
Parameters
JD The date in Dynamical time to calculate for.
static double SunMeanAnomaly(double JD)
Return Value
the mean anomaly of the Sun in degrees.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of the date of Easter in both the Julian and Gregorian calendars. This refers to Chapter 8 in the book.
Functions this class provides include:
static CAAEasterDetails Calculate(long nYear, bool bGregorianCalendar)
Return Value
A class containing
Month The month on which Easter Sunday occurs.
Day The day of the month on which Easter Sunday occurs.
Parameters
nYear The year to perform the calculation for.
bGregorianCalendar true if the calculation is to be performed for the Gregorian calendar, false implies the Julian Calendar
This class provides for calculation of Solar and Lunar Eclipses. This refers to Chapter 54 in the book.
Functions this class provides include:
static CAASolarEclipseDetails CalculateSolar(double k)
Return Value
A struct containing the following values:
bEclipse true if a solar eclipse occurs at this New Moon.
TimeOfMaximumEclipse The date in Dynamical time of maximum eclipse.
F The moons argument of Latitude in degrees at the time of the eclipse.
u The U term for the eclipse.
gamma The gamma term for the eclipse.
GreatestMagnitude The greatest magnitude of the eclipse if the eclipse is partial.
Parameters
k The same K term as returned from CAAMoonPhases::K. For a solar eclipse, this value should be a value without any decimals as a solar eclipse refers to a New Moon.
static CAALunarEclipseDetails CalculateLunar(double k)
Return Value
A struct containing the following values:
bEclipse true if a lunar eclipse occurs at this Full Moon.
TimeOfMaximumEclipse The date in Dynamical time of maximum eclipse.
F The moons argument of Latitude in degrees at the time of the eclipse.
u The U term for the eclipse.
gamma The gamma term for the eclipse.
PenumbralRadii The radii of the eclipse for the penumbra in equatorial earth radii.
UmbralRadii The radii of the eclipse for the umbra in equatorial earth radii.
PenumbralMagnitude The magnitude of the eclipse if the eclipse is penumbral.
UmbralMagnitude The magnitude of the eclipse if the eclipse is umbral.
PartialPhaseSemiDuration The semi-duration of the eclipse during the partial phase.
TotalPhaseSemiDuration The semi-duration of the eclipse during the total phase.
PartialPhasePenumbralSemiDuration The semi-duration of the partial phase in the penumbra.
Parameters
k The same K term as returned from CAAMoonPhases::K. For a lunar eclipse, this value should be decimal value incremented by 0.5 as a lunar eclipse refers to a Full Moon.
This class provides the algorithms which map ecliptical elements from one equinox to another. This refers to Chapter 24 in the book.
Functions this class provides include:
CAAEclipticalElements::Calculate
static CAAEclipticalElementDetails Calculate(double i0, double w0, double omega0, double JD0, double JD)
Return Value
A struct containing the following values:
i The reduced inclination in degrees.
w The reduced argument of perihelion in degrees.
omega The reduced longitude of the ascending node in degrees
Parameters
i0 The inclination in degrees to reduce.
w0 The argument of perihelion in degrees to reduce.
omega0 The longitude of the ascending node in degrees to reduce.
JD0 The initial epoch in Dynamical time to calculate for.
JD The epoch in Dynamical time to reduce the elements to.
CAAEclipticalElements::FK4B1950ToFK5J2000
static CAAEclipticalElementDetails KF4B1950ToFK5J2000(double i0, double w0, double omega0)
Return Value
A struct containing the following values:
i The reduced inclination in degrees.
w The reduced argument of perihelion in degrees.
omega The reduced longitude of the ascending node in degrees
Parameters
i0 The inclination in degrees to reduce.
w0 The argument of perihelion in degrees to reduce.
omega0 The longitude of the ascending node in degrees to reduce.
This class provides the algorithms to calculate the elements of the planetary orbits. This refers to Chapter 31 in the book.
Functions this class provides include:
MercuryLongitudeAscendingNodeJ2000
MercuryLongitudePerihelionJ2000
VenusLongitudeAscendingNodeJ2000
EarthLongitudeAscendingNodeJ2000
MarsLongitudeAscendingNodeJ2000
JupiterLongitudeAscendingNodeJ2000
JupiterLongitudePerihelionJ2000
SaturnLongitudeAscendingNodeJ2000
SaturnLongitudePerihelionJ2000
UranusLongitudeAscendingNodeJ2000
UranusLongitudePerihelionJ2000
NeptuneLongitudeAscendingNodeJ2000
NeptuneLongitudePerihelionJ2000
CAAElementsPlanetaryOrbit::MercuryMeanLongitude
static double MercuryMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::MercurySemimajorAxis
static double MercurySemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::MercuryEccentricity
static double MercuryEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryInclination
static double MercuryInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryLongitudeAscendingNode
static double MercuryLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryLongitudePerihelion
static double MercuryLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusMeanLongitude
static double VenusMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::VenusSemimajorAxis
static double VenusSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::VenusEccentricity
static double VenusEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusInclination
static double VenusInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusLongitudeAscendingNode
static double VenusLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusLongitudePerihelion
static double VenusLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthMeanLongitude
static double EarthMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::EarthSemimajorAxis
static double EarthSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::EarthEccentricity
static double EarthEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthInclination
static double EarthInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthLongitudePerihelion
static double EarthLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsMeanLongitude
static double MarsMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::MarsSemimajorAxis
static double MarsSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::MarsEccentricity
static double MarsEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsInclination
static double MarsInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsLongitudeAscendingNode
static double MarsLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsLongitudePerihelion
static double MarsLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterMeanLongitude
static double JupiterMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::JupiterSemimajorAxis
static double JupiterSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::JupiterEccentricity
static double JupiterEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterInclination
static double JupiterInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterLongitudeAscendingNode
static double JupiterLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterLongitudePerihelion
static double JupiterLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnMeanLongitude
static double SaturnMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::SaturnSemimajorAxis
static double SaturnSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::SaturnEccentricity
static double SaturnEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnInclination
static double SaturnInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnLongitudeAscendingNode
static double SaturnLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnLongitudePerihelion
static double SaturnLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusMeanLongitude
static double UranusMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::UranusSemimajorAxis
static double UranusSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::UranusEccentricity
static double UranusEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusInclination
static double UranusInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusLongitudeAscendingNode
static double UranusLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusLongitudePerihelion
static double UranusLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneMeanLongitude
static double NeptuneMeanLongitude(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::NeptuneSemimajorAxis
static double NeptuneSemimajorAxis(double JD)
Return Value
the semi major axis of the planet in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOribit::NeptuneEccentricity
static double NeptuneEccentricity(double JD)
Return Value
the eccentricity of the orbit.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneInclination
static double NeptuneInclination(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneLongitudeAscendingNode
static double NeptuneLongitudeAscendingNode(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneLongitudePerihelion
static double NeptuneLongitudePerihelion(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the ecliptic and mean equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryMeanLongitudeJ2000
static double MercuryMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryInclinationJ2000
static double MercuryInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryLongitudeAscendingNodeJ2000
static double MercuryLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MercuryLongitudePerihelionJ2000
static double MercuryLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusMeanLongitudeJ2000
static double VenusMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusInclinationJ2000
static double VenusInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusLongitudeAscendingNodeJ2000
static double VenusLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::VenusLongitudePerihelionJ2000
static double VenusLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthMeanLongitudeJ2000
static double EarthMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthInclinationJ2000
static double EarthInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthLongitudeAscendingNodeJ2000
static doubleEarthLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::EarthLongitudePerihelionJ2000
static double EarthLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsMeanLongitudeJ2000
static double MarsMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsInclinationJ2000
static double MarsInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsLongitudeAscendingNodeJ2000
static double MarsLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::MarsLongitudePerihelionJ2000
static double MarsLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterMeanLongitudeJ2000
static double JupiterMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterInclinationJ2000
static double JupiterInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterLongitudeAscendingNodeJ2000
static double JupiterLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::JupiterLongitudePerihelionJ2000
static double JupiterLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnMeanLongitudeJ2000
static double SaturnMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnInclinationJ2000
static double SaturnInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnLongitudeAscendingNodeJ2000
static double SaturnLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::SaturnLongitudePerihelionJ2000
static double SaturnLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusMeanLongitudeJ2000
static double UranusMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusInclinationJ2000
static double UranusInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusLongitudeAscendingNodeJ2000
static double UranusLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::UranusLongitudePerihelionJ2000
static double UranusLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneMeanLongitudeJ2000
static double NeptuneMeanLongitudeJ2000(double JD)
Return Value
the mean longitude of the planet in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneInclinationJ2000
static double NeptuneInclinationJ2000(double JD)
Return Value
the inclination on the plane of the ecliptic in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneLongitudeAscendingNodeJ2000
static double NeptuneLongitudeAscendingNodeJ2000(double JD)
Return Value
the longitude of the ascending node in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
CAAElementsPlanetaryOrbit::NeptuneLongitudePerihelionJ2000
static double NeptuneLongitudePerihelionJ2000(double JD)
Return Value
the longitude of the perihelion in degrees with respect to the fixed ecliptic of J2000.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of the position of an object in an elliptical orbit. This refers to Chapter 33 in the book.
Functions this class provides include:
SemiMajorAxisFromPerihelionDistance
static CAAEllipticalPlanetaryDetails Calculate(double JD, EllipticalObject object)
Return Value
A class containing
ApparentGeocentricLongitude The apparent geocentric ecliptical longitude in degrees of the object.
ApparentGeocentricLatitude The apparent geocentric ecliptical latitude in degrees of the object.
ApparentGeocentricDistance The apparent distance in astronomical units between the object and the Earth.
ApparentLightTime The apparent light travel time in days.
ApparentGeocentricRA The apparent right ascension of the planet as an hour angle.
ApparentGeocentricDeclination The apparent declination of the planet in degrees.
Parameters
JD The date in Dynamical time to calculate for.
object An enum specifying which object (Planet except Earth or the Sun) the calculation is to be carried out for.
static CAAEllipticalObjectDetails Calculate(double JD, const CAAEllipticalObjectElements& elements)
Return Value
A class containing
HeliocentricRectangularEquatorial 3D rectangular heliocentric equatorial coordinates of the object.
HeliocentricRectangularEcliptical 3D rectangular heliocentric ecliptical coordinates of the object.
HeliocentricEclipticLongitude The heliocentric ecliptical longitude in degrees of the object.
HeliocentricEclipticLatitude The heliocentric ecliptical latitude in degrees of the object.
TrueGeocentricRA The geocentric right ascension of the object as an hour angle (i.e. without light time correction applied).
TrueGeocentricDeclination The geocentric declination of the object in degrees (i.e. without light time correction applied).
TrueGeocentricDistance The true distance in astronomical units between the Earth and the object.
TrueGeocentricLightTime The light travel time in days from the Earth to the object.
AstrometricGeocenticRA The geocentric right ascension of the object as an hour angle (i.e. with light time correction applied)
AstrometricGeocentricDeclination The geocentric declination of the object in degrees (i.e. with light time correction applied)
AstrometricGeocentricDistance The observed distance of the object in astronomical units.
AstrometricGeocentricLightTime The observed light travel time of the object in days.
Elongation The elongation of the object to the Sun in degrees.
PhaseAngle The phase angle (the angle Sun - object - Earth) in degrees.
Parameters
JD The date in Dynamical time to calculate for.
elements A class containing the following orbital elements
a The semi major axis in astronomical units.
e The eccentricity of the orbit.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox The Julian day for which equatorial coordinates should be calculated for.
T The Julian date of the time of passage in perihelion.
CAAElliptical::DistanceToLightTime
static double DistanceToLightTime(double Distance)
Return Value
The light travel time in days corresponding to the distance.
Parameters
Distance The distance in astronomical units to convert.
CAAElliptical::SemiMajorAxisFromPerihelionDistance
static double SemiMajorAxisFromPerihelionDistance(double q, double e)
Return Value
The semi major axis of the orbit in astronomical units.
Parameters
q The perihelion distance in astronomical units.
e The eccentricity of the orbit.
CAAElliptical::MeanMotionFromSemiMajorAxis
static double MeanMotionFromSemiMajorAxis(double a)
Return Value
The mean motion in degrees / day.
Parameters
a The semi major axis of the orbit in astronomical units.
CAAElliptical::InstantaneousVelocity
static double InstantaneousVelocity(double r, double a)
Return Value
The instantaneous velocity of the object in kilometres per second.
Parameters
r The distance of the object from the Sun in astronomical units.
a The semi major axis of the orbit in astronomical units.
CAAElliptical::VelocityAtPerihelion
static double VelocityAtPerihelion(double e, double a)
Return Value
The velocity of the object in kilometres per second at perihelion.
Parameters
e The eccentricity of the orbit.
a The semi major axis of the orbit in astronomical units.
CAAElliptical::VelocityAtAphelion
static double VelocityAtAphelion(double e, double a)
Return Value
The velocity of the object in kilometres per second at aphelion.
Parameters
e The eccentricity of the orbit.
a The semi major axis of the orbit in astronomical units.
CAAElliptical::LengthOfEllipse
static double LengthOfEllipse(double e, double a)
Return Value
The length of the eclipse in astronomical units.
Parameters
e The eccentricity of the orbit.
a The semi major axis of the orbit in astronomical units.
static double CometMagnitude(double g, double delta, double k, double r)
Return Value
The magnitude of the comet.
Parameters
g The absolute magnitude of the comet.
delta Distance of the comet to the Earth in astronomical units.
k A constant which differs from one comet to another.
r Distance of the comet from the Sun in astronomical units
Remarks
This refers to algorithm 33.13 on page 231
CAAElliptical::MinorPlanetMagnitude
static double MinorPlanetMagnitude(double H, double delta, double G, double r, double PhaseAngle)
Return Value
The magnitude of the minor planet.
Parameters
H The mean absolute visual magnitude of the minor planet.
delta Distance of the minor planet to the Earth in astronomical units.
G The so called "slope parameter" which differs from one minor planet to another.
r Distance of the minor planet from the Sun in astronomical units
PhaseAngle the Sun - body - Earth angle in degrees
Remarks
This refers to algorithm 33.14 on page 231
This class provides for calculation of the Equation of Time. This refers to Chapter 28 in the book.
Functions this class provides include:
static double Calculate(double JD)
Return Value
the equation of time in decimal minutes.
Parameters
JD The date in Dynamical time to calculate for.
This class provides the algorithms to calculate the dates of the Equinoxes and Solstices. This refers to Chapter 27 in the book.
Functions this class provides include:
CAAEquinoxesAndSolstices::SpringEquinox
static double SpringEquinox(long Year)
Return Value
The date in Dynamical time when the Spring Equinox occurs.
Parameters
Year The year to calculate the occurrence for.
CAAEquinoxesAndSolstices::SummerSolstice
static double SummerSolstice(long Year)
Return Value
The date in Dynamical time when the Summer Solstice occurs.
Parameters
Year The year to calculate the occurrence for.
CAAEquinoxesAndSolstices::AutumnEquinox
static double AutumnEquinox(long Year)
Return Value
The date in Dynamical time when the Autumn Equinox occurs.
Parameters
Year The year to calculate the occurrence for.
CAAEquinoxesAndSolstices::WinterSolstice
static double WinterSolstice(long Year)
Return Value
The date in Dynamical time when the Winter Solstice occurs.
Parameters
Year The year to calculate the occurrence for.
CAAEquinoxesAndSolstices::LengthOfSpring
static double LengthOfSpring(long Year)
Return Value
The length of the astronomical Spring season in days.
Parameters
Year The year to calculate for.
CAAEquinoxesAndSolstices::LengthOfSummer
static double LengthOfSummer(long Year)
Return Value
The length of the astronomical Summer season in days.
Parameters
Year The year to calculate for.
CAAEquinoxesAndSolstices::LengthOfAutumn
static double LengthOfAutumn(long Year)
Return Value
The length of the astronomical Autumn season in days.
Parameters
Year The year to calculate for.
CAAEquinoxesAndSolstices::LengthOfWinter
static double LengthOfWinter(long Year)
Return Value
The length of the astronomical Winter season in days.
Parameters
Year The year to calculate for.
This class provides the algorithms to convert to the FK5 standard reference frame. This refers to parts of Chapter 26 and 32 in the book.
Functions this class provides include:
static double CorrectionInLongitude(double longitude, double Latitude, double JD)
Return Value
The correction in degrees to convert a VSOP heliocentric longitude to the FK5 reference frame.
Parameters
Longitude The VSOP heliocentric longitude in degrees.
Latitude The VSOP heliocentric latitude in degrees.
JD The date in Dynamical time to calculate for.
static double CorrectionInLatitude(double longitude, double JD)
Return Value
The
Parameters
Longitude The VSOP heliocentric longitude in degrees.
JD The date in Dynamical time to calculate for.
static CAA3DCoordinate ConvertVSOPToFK5J2000(const CAA3DCoordinate& value)
Return Value
A class containing the converted equatorial FK5 J2000 reference frame coordinates.
Parameters
value The geometric rectangular ecliptical coordinates of the object (e.g. the Sun) to convert from the dynamical reference frame (VSOP) to the equatorial FK5 J2000 reference frame.
static CAA3DCoordinate ConvertVSOPToFK5B1950(const CAA3DCoordinate& value)
Return Value
A class containing the converted equatorial FK5 B1950 reference frame coordinates.
Parameters
value The geometric rectangular ecliptical coordinates of the object (e.g. the Sun) to convert from the dynamical reference frame (VSOP) to the equatorial FK5 B1950 reference frame.
CAAFK5::ConvertVSOPToFK5AnyEquinox
static CAA3DCoordinate ConvertVSOPToFK5AnyEquinox(const CAA3DCoordinate& value, double JDEquinox)
Return Value
A class containing the converted equatorial FK5 reference frame coordinates.
Parameters
value The geometric rectangular ecliptical coordinates of the object (e.g. the Sun) to convert from the dynamical reference frame (VSOP) to the equatorial FK5 reference frame of JDEquinox.
JDEquinox The Julian day for which equatorial coordinates should be calculated for.
This class provides for calculation of the positions of the Galilean moons of Jupiter. This refers to Chapter 44 in the book.
Functions this class provides include:
static CAAGalileanMoonsDetails Calculate(double JD)
Return Value
A class which itself contains a class for each moon. This contained class itself contains
MeanLongitude The mean longitude of the moon in degrees.
TrueLongitude The true longitude of the moon in degrees.
TropicalLongitude The tropical longitude of the moon in degrees.
EquatorialLatitude The latitude in degrees of the moon with respect to Jupiter's equatorial plane.
r The radius vector of the moon in equatorial radii of Jupiter.
TrueRectangularCoordinates The true 3D rectangular coordinates of the moon.
ApparentRectangularCoordinates The apparent 3D rectangular coordinates of the moon.
bInTransit A Boolean which if true means that the moon is in front of Jupiter as viewed from the Earth otherwise false.
bInOccultation A Boolean which if true means that the moon is behind Jupiter as viewed from the Earth otherwise false.
bInEclipse A Boolean which if true means that the moon is behind Jupiter as viewed from the Sun otherwise false.
bInShadowTransit A Boolean which if true means that the moon is in front of Jupiter as viewed from the Earth otherwise false.
Parameters
JD The date in Dynamical time to calculate for.
This class provides some basic algorithms related to the figure of the Earth's surface.
Functions this class provides include:
static double RhoSinThetaPrime(double GeographicalLatitude, double Height)
Return Value
A numeric value of your position relative to the centre of the earth expressed in units of the equatorial radius. For more information refer to the diagram on Page 81.
Parameters
GeographicalLatitude The latitude of the position in degrees.
Height The observer's height above sea level in meters
static double RhoCosThetaPrime(double GeographicalLatitude, double Height)
Return Value
A numeric value of your position relative to the centre of the earth expressed in units of the equatorial radius. For more information refer to the diagram on Page 81.
Parameters
GeographicalLatitude The latitude of the position in degrees.
Height The observer's height above sea level in meters
CAAGlobe::RadiusOfParallelOfLatitude
static double RadiusOfParallelOfLatitude(double GeographicalLatitude)
Return Value
The radius of parallel of latitude expressed in kilometres.
Parameters
GeographicalLatitude The latitude of the position in degrees.
static double RadiusOfCurvature(double GeographicalLatitude)
Return Value
The radius of curvature of latitude expressed in kilometres.
Parameters
GeographicalLatitude The latitude of the position in degrees.
CAAGlobe::DistanceBetweenPoints
static double DistanceBetweenPoints(double GeographicalLatitude1, double GeographicalLongitude1, double GeographicalLatitude2, double GeographicalLongitude2)
Return Value
The shortest distance between two known points on the surface of the Earth expressed in kilometres.
Parameters
GeographicalLatitude1 The latitude of the position of the first point in degrees.
GeographicalLatitude2 The latitude of the position of the second point in degrees.
This class provides the algorithms to calculate a planet's phase angle, illuminated fraction and magnitude. This refers to Chapter 41 in the book.
Functions this class provides include:
CAAIlluminatedFraction::PhaseAngle
static double PhaseAngle(double r, double R, double Delta)
static double PhaseAngle(double R, double R0, double B, double L, double L0, double Delta)
Return Value
The phase angle in degrees.
Parameters (First Version)
r The planet's distance to the Sun in astronomical units.
R The distance of the Sun from the Earth in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Parameters (Second Version)
R The planet's distance to the Sun in astronomical units.
R0 The distance of the Sun from the Earth in astronomical units.
B The planet's heliocentric latitude in degrees.
L The planet's heliocentric longitude in degrees.
L0 The heliocentric latitude of the Earth in degrees.
Delta The planet's distance from the Earth in astronomical units.
CAAIlluminatedFraction::PhaseAngleRectangular
static double PhaseAngleRectangular(double x, double y, double z, double B, double L, double Delta)
Return Value
The phase angle in degrees.
Parameters
x The geocentric rectangular ecliptical X coordinate of the object.
y The geocentric rectangular ecliptical Y coordinate of the object.
z The geocentric rectangular ecliptical Y coordinate of the object.
B The planet's heliocentric latitude in degrees.
L The planet's heliocentric longitude in degrees.
Delta The planet's distance from the Earth in astronomical units.
CAAIlluminatedFraction::IlluminatedFraction
static double IlluminatedFraction(double r, double R, double Delta)
static double IlluminatedFraction(double PhaseAngle)
Return Value
The phase angle in degrees.
r The planet's distance to the Sun in astronomical units.
R The distance of the Sun from the Earth in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
PhaseAngle The planet's phase angle in degrees.
CAAIlluminatedFraction::MercuryMagnitudeAA
static double MercuryMagnitudeAA(double r, double Delta, double i)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::MercuryMagnitudeMuller
static double MercuryMagnitudeMuller(double r, double Delta, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::VenusMagnitudeAA
static double VenusMagnitudeAA(double r, double Delta, double i)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::VenusMagnitudeMuller
static double VenusMagnitudeMuller(double r, double Delta, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::MarsMagnitudeAA
static double MarsMagnitudeAA(double r, double Delta, double i)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::MarsMagnitudeMuller
static double MarsMagnitudeMuller(double r, double Delta, double i)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::JupiterMagnitudeAA
static double JupiterMagnitudeAA(double r, double Delta, double i)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
i The planet's phase angle in degrees.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::JupiterMagnitudeMuller
static double JupiterMagnitudeMuller(double r, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::SaturnMagnitudeAA
static double SaturnMagnitudeAA(double r, double Delta, double DeltaU, double B)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
DeltaU The difference between the Saturnicentric longitudes of the Sun and the Earth, measured in the plane o the ring in degrees.
B The Saturnicentric latitude of the Earth referred to the plane of the ring in degrees
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::SaturnMagnitudeMuller
static double SaturnMagnitudeMuller(double r, double Delta, double DeltaU, double B)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
DeltaU The difference between the Saturnicentric longitudes of the Sun and the Earth, measured in the plane o the ring in degrees.
B The Saturnicentric latitude of the Earth referred to the plane of the ring in degrees
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::UranusMagnitudeAA
static double UranusMagnitudeAA(double r, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::UranusMagnitudeMuller
static double UranusMagnitudeMuller(double r, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::NeptuneMagnitudeAA
static double NeptuneMagnitudeAA(double r, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
CAAIlluminatedFraction::NeptuneMagnitudeMuller
static double NeptuneMagnitudeMuller(double r, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Remarks
Uses the formula to calculate the magnitude as provided by G. Muller.
CAAIlluminatedFraction::PlutoMagnitudeAA
static double PlutoMagnitudeAA(double r, double Delta)
Return Value
The magnitude of the planet.
Parameters
r The planet's distance to the Sun in astronomical units.
Delta The planet's distance from the Earth in astronomical units.
Remarks
Uses the formula to calculate the magnitude as provided in the Astronomical Almanac.
This class provides the algorithms for interpolation. This refers to Chapter 3 in the book.
Functions this class provides include:
static double Interpolate(double n, double Y1, double Y2, double Y3)
static double Interpolate(double n, double Y1, double Y2, double Y3, double Y4, double Y5)
Return Value
The interpolated Y value.
Parameters
n The interpolating factor.
Y1 The first Y value to interpolate from.
Y2 The second Y value to interpolate from.
Y3 The third Y value to interpolate from.
Y4 The fourth Y value to interpolate from.
Y5 The fifth Y value to interpolate from.
Remarks
Interpolates a function from 3 or 5 points.
CAAJewishCalendar::InterpolateToHalves
static double InterpolateToHalves(double Y1, double Y2, double Y3, double Y4)
Return Value
The interpolated Y value.
Parameters
Y1 The first Y value to interpolate from.
Y2 The second Y value to interpolate from.
Y3 The third Y value to interpolate from.
Y4 The fourth Y value to interpolate from.
Remarks
Interpolates a function to the middle location where 4 evenly spaced values are provided.
CAAInterpolate::LagrangeInterpolate
static double LagrangeInterpolate(double X, int n, double* pX, double* pY)
Return Value
The interpolated Y value.
Parameters
X The X value to interpolate for.
n The size of the pX and pY arrays.
pX Pointer to the array of X coordinates to interpolate from.
pY Pointer to the array of Y coordinates to interpolate from.
Remarks
Interpolates a function using Lagrange's formula where an arbitrary number of values are provided.
static double Extremum(double Y1, double Y2, double Y3, double& nm)
static double Extremum(double Y1, double Y2, double Y3, double Y4, double Y5, double& nm)
Return Value
The extreme Y value.
Parameters
Y1 The first Y value to interpolate from.
Y2 The second Y value to interpolate from.
Y3 The third Y value to interpolate from.
Y4 The fourth Y value to interpolate from.
Y5 The fifth Y value to interpolate from.
nm Upon return will contain the corresponding value of the argument X where the extremum is reached.
Remarks
Interpolates a function to determine where the function reaches an extremum.
static double Zero(double Y1, double Y2, double Y3)
static double Zero(double Y1, double Y2, double Y3, double Y4, double Y5)
Return Value
The value of the argument X for which the function y becomes zero.
Parameters
Y1 The first Y value to interpolate from.
Y2 The second Y value to interpolate from.
Y3 The third Y value to interpolate from.
Y4 The fourth Y value to interpolate from.
Y5 The fifth Y value to interpolate from.
Remarks
Finds where a function reaches zero when the function is "almost a straight line".
static double Zero2(double Y1, double Y2, double Y3)
static double Zero2(double Y1, double Y2, double Y3, double Y4, double Y5)
Return Value
The value of the argument X for which the function y becomes zero.
Parameters
Y1 The first Y value to interpolate from.
Y2 The second Y value to interpolate from.
Y3 The third Y value to interpolate from.
Y4 The fourth Y value to interpolate from.
Y5 The fifth Y value to interpolate from.
Remarks
Finds where a function reaches zero when the curvature of the function is important.
This class provides the algorithms which convert between the Gregorian, Julian and Jewish calendars. This refers to Chapter 9 in the book.
Functions this class provides include:
CAAJewishCalendar::DateOfPesach
static CAACalendarDate DateOfPesach(long Year, bool bGregorianCalendar = false)
Return Value
A class containing
Year The year in the Jewish Calendar.
Month The month of the year in the Gregorian or Julian Calendar corresponding to when Pesach occurs.
Day The day of the month in the Gregorian or Julian Calendar corresponding to when Pesach occurs.
Parameters
Year The year in the Julian or Gregorian Calendar to calculate Jewish Easter or Pesach for. (Years are counted astronomically i.e. 1 BC = Year 0)
bGregorianCalendar true to imply a date in the Gregorian Calendar, false means use the Julian Calendar.
static long DaysInYear(long Year)
Return Value
The number of days in the specified Jewish Year
Parameters
Year The year in the Jewish Calendar.
static bool IsLeap(long Year)
Return Value
true if the specified year is leap otherwise false.
Parameters
Year The year in the Jewish calendar.
This class provides for calculation of the heliocentric position of Jupiter. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for the solution of Kepler's equation. This refers to Chapter 30 in the book.
Functions this class provides include:
static double Calculate(double M, double e, int nIterations = 53)
Return Value
The Eccentric anomaly in degrees (i.e. the solution to Kepler's equation).
Parameters
M The mean anomaly in degrees.
e The eccentricity of the orbit
nIterations The method uses the third method to solve the equation. This uses a binary chop to find the solution. The default value of 53 is the number of iterations required to obtain the accuracy of the standard Visual C "double".
This class provides for calculation of the heliocentric position of Mars. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of the heliocentric position of Mercury. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides the algorithms which obtain the position of the Moon. This refers to Chapter 47 in the book.
Functions this class provides include:
RadiusVectorToHorizontalParallax
HorizontalParallaxToRadiusVector
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in kilometres.
Parameters
JD The date in Dynamical time to calculate for.
static double MeanAnomaly(double JD)
Return Value
the mean anomaly of the Moon in degrees.
Parameters
JD The date in Dynamical time to calculate for.
static double MeanElongation(double JD)
Return Value
the mean elongation of the Moon in degrees.
Parameters
JD The date in Dynamical time to calculate for.
static double MeanLongitude(double JD)
Return Value
the mean longitude of the Moon in degrees.
Parameters
JD The date in Dynamical time to calculate for.
CAAMoon::MeanLongitudeAscendingNode
static double MeanLongitudeAscendingNode(double JD)
Return Value
the mean longitude of the ascending node of the Moon in degrees.
Parameters
JD The date in Dynamical time to calculate for.
CAAMoon::TrueLongitudeAscendingNode
static double TrueLongitudeAscendingNode(double JD)
Return Value
the true longitude of the ascending node of the lunar orbit in degrees.
Parameters
JD The date in Dynamical time to calculate for.
static double MeanLongitudePerigee(double JD)
Return Value
the mean longitude of the perigee of the lunar orbit in degrees.
Parameters
JD The date in Dynamical time to calculate for.
static double ArgumentOfLatitude(double JD)
Return Value
the argument of latitude (mean distance of the Moon from its ascending node) in degrees.
Parameters
JD The date in Dynamical time to calculate for.
CAAMoon::RadiusVectorToHorizontalParallax
static double RadiusVectorToHorizontalParallax(double RadiusVector)
Return Value
the parallax of the object in degrees.
Parameters
RadiusVector The distance to the object (e.g. Moon) in kilometres.
CAAMoon::HorizontalParallaxToRadiusVector
static double HorizontalParallaxToRadiusVector(double Parallax)
Return Value
RadiusVector The distance to the object in kilometres.
Parameters
the parallax of the object (e.g. Moon) in degrees.
This class provides algorithms for the Moon's elongation, phase angle and illuminated fraction. This refers to Chapter 48 in the book.
Functions this class provides include:
CAAMoonIlluminatedFraction::GeocentricElongation
static double GeocentricElongation(double ObjectAlpha, double ObjectDelta, double SunAlpha, double SunDelta)
Return Value
the elongation of the object from the Sun
Parameters
ObjectAlpha The geocentric right ascension of the object (e.g. the Moon) expressed as an hour angle.
ObjectDelta The geocentric declination of the object (e.g. the Moon) in degrees.
SunAlpha The geocentric right ascension of the Sun expressed as an hour angle.
SunDelta The geocentric declination of the Sun in degrees.
CAAMoonIlluminatedFraction::PhaseAngle
static double PhaseAngle(double GeocentricElongation, double EarthObjectDistance, double EarthSunDistance)
Return Value
the phase angle in degrees.
Parameters
GeocentricElongation The geocentric elongation in degrees.
EarthObjectDistance The distance in astronomical units between the Earth and the object (the Moon)
EarthSunDistance The distance in astronomical units between the Earth and the Sun
Remarks
The EarthObjectDistance and EarthSunDistance should be expressed in the same units for instance in kilometres.
CAAMoonIlluminatedFraction::IlluminatedFraction
static double IlluminatedFraction(double PhaseAngle)
Return Value
the illuminated fraction (a value form 0 to 1).
Parameters
PhaseAngle The phase angle in degrees.
CAAMoonIlluminatedFraction::PositionAngle
static double PositionAngle(double Alpha0, double Delta0, double Alpha, double Delta)
Return Value
the position angle of the midpoint of the illuminated limb of the object (the Moon) in degrees.
Parameters
Alpha0 The geocentric right ascension of the Sun expressed as an hour angle.
Delta0 The geocentric declination of the Sun in degrees.
Alpha The geocentric right ascension of the object (e.g. the Moon) expressed as an hour angle.
Delta The geocentric declination of the object (e.g. the Moon) in degrees.
This class provides algorithms to calculate the times when the Moon reaches its maximum Northerly and Southerly declinations. This refers to Chapter 52 in the book.
Functions this class provides include:
static double K(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAMoonMaxDeclinations) for calculation of the Moon's max declination.
Parameters
Year The Year including decimals to calculate the K value for.
CAAMoonMaxDeclinations::MeanGreatestDeclination
static double MeanGreatestDeclination(double k, bool bNortherly)
Return Value
Returns the date in Dynamical time when the mean maximum declination occurs.
Parameters
k The K value to calculate the max declination for.
bNortherly true if this is a calculation for a maximum northerly declination, false implies a calculation of the a maximum southerly declination.
CAAMoonMaxDeclinations::MeanGreatestDeclinationValue
static double MeanGreatestDeclinationValue(double k)
Return Value
Returns the mean maximum declination in degrees.
Parameters
k The K value to calculate the max declination for.
CAAMoonMaxDeclinations::TrueGreatestDeclination
static double TrueGreatestDeclination(double k, bool bNortherly)
Return Value
Returns the date in Dynamical time when the true maximum declination occurs.
Parameters
k The K value to calculate the max declination for.
bNortherly true if this is a calculation for a maximum northerly declination, false implies a calculation of the a maximum southerly declination.
CAAMoonMaxDeclinations::TrueGreatestDeclinationValue
static double TrueGreatestDeclinationValue(double k)
Return Value
Returns the true maximum declination in degrees.
Parameters
k The K value to calculate the max declination for.
This class provides algorithms which obtain dates when the Moon passes through its nodes. This refers to Chapter 51 in the book.
Functions this class provides include:
static double K(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAMoonNodes) for calculation of the specified passage thro the node.
Parameters
Year The Year including decimals to calculate the K value for.
static double PassageThroNode(double k)
Return Value
Returns the date in Dynamical time when the specified passage thro the node occurs.
Parameters
k The K value to calculate the passage thro the node for.
This class provides algorithms to calculate the approximate times when the distance between the Earth and the Moon is a minimum (perigee) or a maximum (apogee). This refers to Chapter 50 in the book.
Functions this class provides include:
static double K(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAMoonPerigeeApogee) for calculation of the specified phase.
Parameters
Year The Year including decimals to calculate the K value for.
CAAMoonPerigeeApogee::MeanPerigee
static double MeanPerigee(double k)
Return Value
Returns the date in Dynamical time when the mean perigee occurs.
Parameters
k The integer value which gives a perigee.
CAAMoonPerigeeApogee::MeanApogee
static double MeanApogee(double k)
Return Value
Returns the date in Dynamical time when the specified mean apogee occurs.
Parameters
k The K value to calculate the apogee for.
CAAMoonPerigeeApogee::TruePerigee
static double TruePerigee(double k)
Return Value
Returns the date in Dynamical time when the specified true perigee occurs.
Parameters
k The K value to calculate the perigee for.
CAAMoonPerigeeApogee::TrueApogee
static double TrueApogee(double k)
Return Value
Returns the date in Dynamical time when the specified true apogee occurs.
Parameters
k The K value to calculate the apogee for.
CAAMoonPerigeeApogee::PerigeeParallax
static double PerigeeParallax(double k)
Return Value
Returns the parallax at the specified perigee in degrees.
Parameters
k The K value to calculate the perigee parallax for
CAAMoonPerigeeApogee::ApogeeParallax
static double ApogeeParallax(double k)
Return Value
Returns the parallax at the specified apogee in degrees.
Parameters
k The K value to calculate the apogee parallax for.
This class provides algorithms which obtain the dates for the phases of the Moon. This refers to Chapter 49 in the book.
Functions this class provides include:
static double K(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAMoonPhases) for calculation of the specified phase.
Parameters
Year The Year including decimals to calculate the K value for.
static double MeanPhase(double k)
Return Value
Returns the date in Dynamical time when the specified mean moon phase occurs.
Parameters
k The K value to calculate the phase for.
static double TruePhase(double k)
Return Value
Returns the date in Dynamical time when the specified true moon phase occurs.
Parameters
k The K value to calculate the phase for.
This class provides the algorithms which convert between the Julian and Moslem calendars. This refers to Chapter 9 in the book.
Functions this class provides include:
CAAMoslemCalendar::JulianToMoslem
static CAACalendarDate JulianToMoslem(long Year, long Month, long Day)
Return Value
A class containing
Year The year in the Moslem Calendar.
Month The month of the year in the Moslem Calendar (1 for Muharram to 12 for Dhu l-Hijja).
Day The day of the month in the Moslem Calendar.
Parameters
Year The year in the Julian Calendar to convert. (Years are counted astronomically i.e. 1 BC = Year 0)
Month The month of the year in the Julian Calendar (1 for January to 12 for December).
Day The day of the month in the Julian Calendar.
CAAMoslemCalendar::MoslemToJulian
static CAACalendarDate MoslemToJulian(long Year, long Month, long Day)
Return Value
A class containing
Year The year in the Julian Calendar.
Month The month of the year in the Julian Calendar (1 for January to 12 for December).
Day The day of the month in the Julian Calendar.
Parameters
Year The year in the Moslem Calendar to convert
Month The month of the year in the Moslem Calendar (1 for Muharram to 12 for Dhu l-Hijja).
Day The day of the month in the Moslem Calendar.
static bool IsLeap(long Year)
Return Value
true if the specified year is leap otherwise false.
Parameters
Year The year in the Moslem calendar.
This class provides for calculation of the position of an object in an orbit which can be best modelled as near parabolic i.e. eccentricity between 0.98 and 1.02. Chapter 35 in the book includes support for calculating Near-parabolic orbits, but the code is provided in BASIC and the algorithm as presented has problems converging when the eccentricity is close to 1. Instead the algorithms used in this class are based upon the worked examples which Paul Schlyter has provided at http://stjarnhimlen.se/comp/tutorial.html#16
Functions this class provides include:
static CAANearParabolicObjectDetails Calculate(double JD, const CAANearParabolicObjectElements& elements)
Return Value
A class containing
HeliocentricRectangularEquatorial 3D rectangular heliocentric equatorial coordinates of the object.
HeliocentricRectangularEcliptical 3D rectangular heliocentric ecliptical coordinates of the object.
HeliocentricEclipticLongitude The heliocentric ecliptical longitude in degrees of the object.
HeliocentricEclipticLatitude The heliocentric ecliptical latitude in degrees of the object.
TrueGeocentricRA The geocentric right ascension of the object as an hour angle (i.e. without light time correction applied).
TrueGeocentricDeclination The geocentric declination of the object in degrees (i.e. without light time correction applied).
TrueGeocentricDistance The true distance in astronomical units between the Earth and the object.
TrueGeocentricLightTime The light travel time in days from the Earth to the object.
AstrometricGeocenticRA The geocentric right ascension of the object as an hour angle (i.e. with light time correction applied)
AstrometricGeocentricDeclination The geocentric declination of the object in degrees (i.e. with light time correction applied)
AstrometricGeocentricDistance The observed distance of the object in astronomical units.
AstrometricGeocentricLightTime The observed light travel time of the object in days.
Elongation The elongation of the object to the Sun in degrees.
PhaseAngle The phase angle (the angle Sun - object - Earth) in degrees.
Parameters
JD The date in Dynamical time to calculate for.
elements A class containing the following orbital elements
q The perihelion distance in astronomical units.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox The Julian Date for which equatorial coordinates should be calculated for.
T The Julian date of the time of passage in perihelion.
e Eccentricity of the orbit
This class provides for calculation of the heliocentric position of Neptune. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of the time of passages from the orbital elements of a planet or comet through the nodes of its orbit. This refers to Chapter 39 in the book.
Functions this class provides include:
PassageThroAscendingNode (for Elliptical orbits)
PassageThroDescendingNode (for Elliptical orbits)
PassageThroAscendingNode (for Parabolic orbits)
PassageThroDescendingNode (for Parabolic orbits)
CAANodes::PassageThroAscendingNode
static CAANodeObjectDetails PassageThroAscendingNode(const CAAEllipticalObjectElements& elements);
Return Value
A class containing
t The date in Dynamical time to when the body moves thro the ascending node.
radius The radius vector in astronomical units.
Parameters
elements A class containing the following orbital elements
a The semi major axis in astronomical units.
e The eccentricity of the orbit.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox Unused in this function's use of CAAEllipticalObjectElements.
T The Julian date of the time of passage in perihelion.
CAANodes::PassageThroDescendingNode
static CAANodeObjectDetails PassageThroDescendingNode(const CAAEllipticalObjectElements& elements);
Return Value
A class containing
t The date in Dynamical time to when the body moves thro the ascending node.
radius The radius vector in astronomical units.
Parameters
elements A class containing the following orbital elements
a The semi major axis in astronomical units.
e The eccentricity of the orbit.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox Unused in this function's use of CAAEllipticalObjectElements.
T The Julian date of the time of passage in perihelion.
CAANodes::PassageThroAscendingNode
static CAANodeObjectDetails PassageThroAscendingNode(const CAAParabolicObjectElements& elements);
Return Value
A class containing
t The date in Dynamical time to when the body moves thro the ascending node.
radius The radius vector in astronomical units.
Parameters
elements A class containing the following orbital elements
q The perihelion distance in astronomical units.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox Unused in this function's use of CAAParabolicObjectElements.
T The Julian date of the time of passage in perihelion.
CAANodes::PassageThroDescendingNode
static CAANodeObjectDetails PassageThroDescendingNode(const CAAParabolicObjectElements& elements);
Return Value
A class containing
t The date in Dynamical time to when the body moves thro the ascending node.
radius The radius vector in astronomical units.
Parameters
elements A class containing the following orbital elements
q The perihelion distance in astronomical units.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox Unused in this function's use of CAAParabolicObjectElements.
T The Julian date of the time of passage in perihelion.
This class provides for calculation of Nutation and the Obliquity of the Ecliptic. This refers to Chapter 22 and parts of Chapter 23 in the book.
Functions this class provides include:
CAANutation::NutationInLongitude
static double NutationInLongitude(double JD)
Return Value
The nutation in ecliptic longitude in arc seconds of a degree.
Parameters
JD The date in Dynamical time to calculate for.
CAANutation::NutationInObliquity
static double NutationInObliquity(double JD)
Return Value
The nutation in obliquity in arc seconds of a degree.
Parameters
JD The date in Dynamical time to calculate for.
CAANutation::NutationInRightAscension
static double NutationInRightAscension(double Alpha, double Delta, double Obliquity, double NutationInLongitude, double NutationInObliquity)
Return Value
The nutation in right ascension in arc seconds of a degree.
Parameters
Alpha The right ascension of the position in hour angles.
Delta The declination of the position in degrees.
Obliquity The obliquity of the Ecliptic in degrees.
NutationInLongitude The nutation in longitude in arc seconds of a degree.
NutationInObliquity The nutation in obliquity in arc seconds of a degree.
Remarks
This refers to algorithm 23.1 on page 151.
CAANutation::NutationInDeclination
static double NutationInDeclination(double Alpha, double Delta, double Obliquity, double NutationInLongitude, double NutationInObliquity)
Return Value
The nutation in declination in arc seconds of a degree.
Parameters
Alpha The right ascension of the position in hour angles.
Delta The declination of the position in degrees.
Obliquity The obliquity of the Ecliptic in degrees.
NutationInLongitude The nutation in longitude in arc seconds of a degree.
NutationInObliquity The nutation in obliquity in arc seconds of a degree.
Remarks
This refers to algorithm 23.1 on page 151.
CAANutation::MeanObliquityOfEcliptic
static double MeanObliquityOfEcliptic(double JD)
Return Value
The mean obliquity of the ecliptic in degrees.
Parameters
JD The date in Dynamical time to calculate for.
CAANutation::TrueObliquityOfEcliptic
static double TrueObliquityOfEcliptic(double JD)
Return Value
The true obliquity of the ecliptic in degrees.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of the position of an object in a parabolic orbit. This refers to Chapter 34 in the book.
Functions this class provides include:
static CAAParabolicObjectDetails Calculate(double JD, const CAAParabolicObjectElements& elements)
Return Value
A class containing
HeliocentricRectangularEquatorial 3D rectangular heliocentric equatorial coordinates of the object.
HeliocentricRectangularEcliptical 3D rectangular heliocentric ecliptical coordinates of the object.
HeliocentricEclipticLongitude The heliocentric ecliptical longitude in degrees of the object.
HeliocentricEclipticLatitude The heliocentric ecliptical latitude in degrees of the object.
TrueGeocentricRA The geocentric right ascension of the object as an hour angle (i.e. without light time correction applied).
TrueGeocentricDeclination The geocentric declination of the object in degrees (i.e. without light time correction applied).
TrueGeocentricDistance The true distance in astronomical units between the Earth and the object.
TrueGeocentricLightTime The light travel time in days from the Earth to the object.
AstrometricGeocenticRA The geocentric right ascension of the object as an hour angle (i.e. with light time correction applied)
AstrometricGeocentricDeclination The geocentric declination of the object in degrees (i.e. with light time correction applied)
AstrometricGeocentricDistance The observed distance of the object in astronomical units.
AstrometricGeocentricLightTime The observed light travel time of the object in days.
Elongation The elongation of the object to the Sun in degrees.
PhaseAngle The phase angle (the angle Sun - object - Earth) in degrees.
Parameters
JD The date in Dynamical time to calculate for.
elements A class containing the following orbital elements
q The perihelion distance in astronomical units.
i The inclination of the plane of the orbit in degrees.
w The argument of the perihelion in degrees.
omega The longitude of the ascending node in degrees.
JDEquinox The Julian Date for which equatorial coordinates should be calculated for.
T The Julian date of the time of passage in perihelion.
CAAParabolic::CalculateBarkers
static double CalculateBarkers(double W)
Return Value
The solution to Barkers equation as described in algorithm 34.3 on page 241.
Parameters
W The value W as described in algorithm 34.1 on page 241.
This class provides for measurement of various angles on the celestial globe. This refers to Chapter 14 in the book.
Functions this class provides include:
AngleBetweenEclipticAndHorizon
AngleBetweenNorthCelestialPoleAndNorthPoleOfEcliptic
CAAParallactic::ParallacticAngle
static double ParallacticAngle(double HourAngle, double Latitude, double delta)
Return Value
Returns the parallactic angle (the ZCN angle) and is generally designated by q.
Parameters
HourAngle The hour angle.
Latitude The latitude of the position in degrees.
Delta The declination in degrees.
Remarks
This refers to algorithm 14.1 on page 98.
CAAParallactic::EclipticLongitudeOnHorizon
static double EclipticLongitudeOnHorizon(double LocalSiderealTime, double ObliquityOfEcliptic, double Latitude)
Return Value
Returns the ecliptic longitude of two points which are (180 degrees apart) on the horizon.
Parameters
LocalSiderealTime The local sidereal time measured in hours.
ObliquityOfEcliptic The obliquity of the ecliptic in degrees.
Latitude The latitude of the position in degrees.
Remarks
This refers to algorithm 14.2 on page 99.
CAAParallactic::AngleBetweenEclipticAndHorizon
static double AngleBetweenEclipticAndHorizon(double LocalSiderealTime, double ObliquityOfEcliptic, double Latitude)
Return Value
Returns the angle in degrees of the diurnal path of a celestial body (not the ecliptic) relative to the horizon at the time of its rising or setting.
Parameters
LocalSiderealTime The local sidereal time measured in hours.
ObliquityOfEcliptic The obliquity of the ecliptic in degrees.
Latitude The latitude of the position in degrees.
Remarks
This refers to algorithm at the top of page 100.
CAAParallactic::AngleBetweenNorthCelestrialPoleAndNorthPoleOfEcliptic
static double AngleBetweenNorthCelestialPoleAndNorthPoleOfEcliptic(double Lambda, double Beta, double ObliquityOfEcliptic)
Return Value
Return the angle in degrees between the direction of the northern celestial pole and the direction of the north pole of the ecliptic, at the star.
Parameters
Lambda The ecliptical longitude in degrees.
Beta The ecliptical latitude of the star in degrees.
ObliquityOfEcliptic The obliquity of the ecliptic in degrees.
Remarks
This refers to algorithm at the top of page 100.
This class provides for calculation of the topocentric coordinates of a body as seen from the observer's place on the Earth's surface. This refers to Chapter 40 in the book.
Functions this class provides include:
CAAParallax::Equatorial2TopocentricDelta
static CAA2DCoordinate Equatorial2TopocentricDelta(double Alpha, double Delta, double Distance, double Longitude, double Latitude, double Height, double JD)
Return Value
Returns the corrections in equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the correction in right ascension expressed as an hour angle and the y value corresponds to the correction in declination in degrees.
Parameters
Alpha The right ascension in hours of the object at time JD.
Delta The declination in degrees of the object at time JD.
Distance The distance (in astronomical units) to the Earth.
Longitude The longitude in degrees.
Latitude The latitude in degrees.
Height The observer's height above sea level in meters.
JD The date in Dynamical time to calculate for.
Remarks
This returns the difference between the geocentric and topocentric values. This refers to equation 40.4 and 40.5 on page 280.
CAAParallax::Equatorial2Topocentric
static CAA2DCoordinate Equatorial2Topocentric(double Alpha, double Delta, double Distance, double Longitude, double Latitude, double Height, double JD)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to right ascension expressed as an hour angle and the y value corresponds to the right ascension in degrees.
Parameters
Alpha The right ascension in hours of the object at time JD.
Delta The declination in degrees of the object at time JD.
Distance The distance (in astronomical units) to the Earth.
Longitude The longitude in degrees.
Latitude The latitude in degrees.
Height The observer's height above sea level in meters
JD The date in Dynamical time to calculate for.
Remarks
This returns the rigorous conversion between the geocentric and topocentric values. This refers to equation 40.2 and 40.3 on page 279.
CAAParallax::Ecliptic2Topocentric
static CAATopocentricEclipticDetails Ecliptic2Topocentric(double Lambda, double Beta, double Semidiameter, double Distance, double Epsilon, double Longitude, double Latitude, double Height, double JD)
Return Value
A class containing
Lambda The topocentric ecliptical longitude in degrees.
Beta The topocentric ecliptical latitude in degrees.
Semidiameter The topocentric semi diameter in degrees.
Parameters
Lambda The ecliptical longitude in degrees.
Beta The ecliptical latitude in degrees.
Semidiameter The geocentric semi diameter in degrees.
Distance The distance (in astronomical units) to the Earth.
Epsilon The obliquity of the ecliptic in degrees.
Longitude The longitude in degrees.
Latitude The latitude in degrees.
Height The observer's height above sea level in meters.
JD The date in Dynamical time to calculate for.
CAAParallax::ParallaxToDistance
static double ParallaxToDistance(double Parallax)
Return Value
Returns the distance in astronomical units.
Parameters
Parallax The parallax of the body in degrees.
CAAParallax::DistanceToParallax
static double DistanceToParallax(double Distance)
Return Value
Returns the parallax in degrees.
Parameters
Distance The distance (in astronomical units) to the body.
This class provides for calculation of various physical parameters related to the Jupiter. This refers to Chapter 43 in the book.
Functions this class provides include:
static CAAPhysicalJupiterDetails Calculate(double JD)
Return Value
A class containing
DE The planetocentric declination in degrees of the Earth.
DS The planetocentric declination in degrees of the Sun.
Geometricw1 The geometric longitude in degrees of the central meridian for System 1.
Geometricw2 The geometric longitude in degrees of the central meridian for System 2.
Apparentw1 The apparent longitude in degrees of the central meridian for System 1.
Apparentw2 The geometric longitude in degrees of the central meridian for System 2.
P The position angle of Jupiter's northern rotational pole in degrees.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of various physical parameters related to the Mars. This refers to Chapter 42 in the book.
Functions this class provides include:
static CAAPhysicalMarsDetails Calculate(double JD)
Return Value
A class containing
DE The planetocentric declination in degrees of the Earth.
DS The planetocentric declination in degrees of the Sun.
w The aerographic longitude in degrees of the central meridian as seen from Earth.
P The geocentric position angle of Mars' northern rotational pole in degrees.
X The position angle in degrees of the mid-point of the illuminated limb.
k The illuminated fraction of the planet's disk.
q The defect of illumination.
d The apparent diameter of Mars in arc seconds.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of various physical parameters related to the Moon. This refers to Chapter 53 in the book.
Functions this class provides include:
CalculateSelenographicPositionOfSun
CAAPhysicalMoon::CalculateGeocentric
static CAAPhysicalMoonDetails CalculateGeocentric(double JD)
Return Value
A class containing
ldash The optical libration in longitude in degrees.
bdash The optical libration in latitude in degrees.
ldash2 The physical libration in longitude in degrees.
bdash2 The physical libration in latitude in degrees.
l The total libration in longitude in degrees.
b The total libration in latitude in degrees.
P The position angle in degrees of the Moon's axis of rotation.
Parameters
JD The date in Dynamical time to calculate for.
Remarks
Calculates the physical parameters referred to the centre of the Earth
CAAPhysicalMoon::CalculateTopcentric
static CAAPhysicalMoonDetails CalculateTopocentric(double JD, double Longitude, double Latitude)
Return Value
A class containing
ldash The optical libration in longitude in degrees.
bdash The optical libration in latitude in degrees.
ldash2 The physical libration in longitude in degrees.
bdash2 The physical libration in latitude in degrees.
l The total libration in longitude in degrees.
b The total libration in latitude in degrees.
P The position angle in degrees of the Moon's axis of rotation.
Parameters
JD The date in Dynamical time to calculate for.
Longitude The topocentric longitude in degrees of the position to perform the calculation for.
Latitude The topocentric latitude in degrees of the position to perform the calculation for.
Remarks
Calculates the physical parameters referred to the specified position on the Earth
CAAPhysicalMoon::CalculateSelenographicPositionOfSun
static CAAPSelenographicMoonDetails CalculateSelenographicPositionOfSun(double JD)
Return Value
A class containing
l0 The longitude in degrees of the sub solar point.
b0 The latitude in degrees of the sub solar point.
c0 The selenographic colongitude of the sun.
Parameters
JD The date in Dynamical time to calculate for.
CAAPhysicalMoon::AltitudeOfSun
static double AltitudeOfSun(double JD, double Longitude, double Latitude)
Return Value
Returns the altitude in degrees of the Sun at the specified lunar location.
Parameters
JD The date in Dynamical time to calculate for.
Longitude The selenographic longitude in degrees of the position to perform the calculation for.
Latitude The selenographic latitude in degrees of the position to perform the calculation for.
CAAPhysicalMoon::TimeOfSunrise
static double TimeOfSunrise(double JD, double Longitude, double Latitude)
Return Value
Returns the nearest Julian date in Dynamical time when the Sun rises at the specified lunar location. This value will always be earlier than the parameter "JD"
Parameters
JD The date in Dynamical time to calculate for.
Longitude The selenographic longitude in degrees of the position to perform the calculation for.
Latitude The selenographic latitude in degrees of the position to perform the calculation for.
static double TimeOfSunset(double JD, double Longitude, double Latitude)
Return Value
Returns the nearest Julian date in Dynamical time when the Sun rises at the specified lunar location. This value will always be later than the parameter "JD"
Parameters
JD The date in Dynamical time to calculate for.
Longitude The selenographic longitude in degrees of the position to perform the calculation for.
Latitude The selenographic latitude in degrees of the position to perform the calculation for.
This class provides for calculation of various physical parameters related to the Sun. This refers to Chapter 29 in the book.
Functions this class provides include:
static CAAPhysicalSunDetails Calculate(double JD)
Return Value
A class containing
P The position angle in degrees of the northern extremity of the axis of rotation.
B0 The heliographic latitude in degrees of the centre of the solar disk.
L0 The heliographic longitude in degrees of the centre of the solar disk.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for the calculation of several configurations involving planets Mercury to Neptune; oppositions and conjunctions with the Sun, greatest elongations, and stations. This refers to Chapter 36 in the book.
Functions this class provides include:
static double K(double Year, PlanetaryObject object, EventType type)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetaryPhenomena) for calculation of the various event types.
Parameters
Year The Year including decimals to calculate the K value for.
object An enum specifying the planet to calculate for.
type An enum to specify the event type to calculate.
static double Mean(double k, PlanetaryObject object, EventType type)
Return Value
Returns the date in Dynamical time when the specified mean planetary configuration occurs (that is, calculated from circular orbits and uniform planetary motions).
Parameters
k The K value to calculate the phenomena for.
object An enum specifying the planet to calculate for.
type An enum to specify the event type to calculate.
static double True(double k, PlanetaryObject object, EventType type)
Return Value
Returns the date in Dynamical time when the true planetary configuration occurs.
Parameters
k The K value to calculate the phenomena for.
object An enum specifying the planet to calculate for.
type An enum to specify the event type to calculate.
CAAPlanetaryPhenomena::ElongationValue
static double ElongationValue(double k, PlanetaryObject object, bool bEastern)
Return Value
the value of the greatest elongation of a planet.
Parameters
k The K value to calculate the phenomena for.
object An enum specifying the planet to calculate for.
bEastern true if you want the elongation value for the eastern elongation, otherwise false implies western elongation.
This class provides for the calculation of the time when a planet is in perihelion or in aphelion. This refers to Chapter 38 in the book.
Functions this class provides include:
CAAPlanetPerihelionAphelion::MercuryK
static long MercuryK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::MercuryPerihelion
static double MercuryPerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::MercuryAphelion
static double MercuryAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
CAAPlanetPerihelionAphelion::VenusK
static long VenusK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::VenusPerihelion
static double VenusPerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::VenusAphelion
static double VenusAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
CAAPlanetPerihelionAphelion::EarthK
static long EarthK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::EarthPerihelion
static double EarthPerihelion(long k, bool bBarycentric = false)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
bBarycentric If true, the calculation is for the barycenter of the Earth - Moon system, false implies the Earth itself.
CAAPlanetPerihelionAphelion::EarthAphelion
static double EarthAphelion(long k, bool bBarycentric = false)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
bBarycentric If true, the calculation is for the barycenter of the Earth - Moon system, false implies the Earth itself
CAAPlanetPerihelionAphelion::MarsK
static long MarsK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::MarsPerihelion
static double MarsPerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::MarsAphelion
static double MarsAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
CAAPlanetPerihelionAphelion::JupiterK
static long JupiterK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::JupiterPerihelion
static double JupiterPerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::JupiterAphelion
static double JupiterAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
CAAPlanetPerihelionAphelion::SaturnK
static long SaturnK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::SaturnPerihelion
static double SaturnPerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::SaturnAphelion
static double SaturnAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
CAAPlanetPerihelionAphelion::UranusK
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::UranusPerihelion
static double UranusPerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::UranusAphelion
static double UranusAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
CAAPlanetPerihelionAphelion::NeptuneK
static long NeptuneK(double Year)
Return Value
Returns the approximate value of K (required by the other methods of CAAPlanetPerihelionAphelion) for calculation of the dates of Perihelion or Aphelion.
Parameters
Year The Year including decimals to calculate the K value for.
CAAPlanetPerihelionAphelion::NeptunePerihelion
static double NeptunePerihelion(long k)
Return Value
Returns the date in Dynamical time when the specified perihelion occurs.
Parameters
k The K value to calculate the perihelion for.
CAAPlanetPerihelionAphelion::NeptuneAphelion
static double NeptuneAphelion(long k)
Return Value
Returns the date in Dynamical time when the specified aphelion occurs.
Parameters
k The K value to calculate the aphelion for.
This class provides for calculation of the heliocentric position of Pluto. This refers to Chapter 37 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the standard equinox J2000.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the standard equinox J2000.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for the calculation of the slow drift that the direction of the rotational axis of the Earth undergoes over time. This refers to Chapter 21 in the book.
Functions this class provides include:
AdjustPositionUsingUniformProperMotion
AdjustPositionUsingMotionInSpace
CAAPrecession::PrecessEquatorial
static CAA2DCoordinate PrecessEquatorial(double Alpha, double Delta, double JD0, double JD)
Return Value
Returns the precessed equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the right ascension as an hour angle and the y value corresponds to the declination in degrees.
Parameters
Alpha The right ascension in hours of the object at time JD.
Delta The declination in degrees of the object at time JD.
JD0 The date in Dynamical time corresponding to the initial epoch.
JD The date in Dynamical time corresponding to the final epoch.
CAAPrecession::PrecessEquatorialFK4
static CAA2DCoordinate PrecessEquatorialFK4(double Alpha, double Delta, double JD0, double JD)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the equatorial right ascension an hour angle and the y value corresponds to the declination in degrees.
Parameters
Alpha The right ascension in hours of the object at time JD.
Delta The declination in degrees of the object at time JD.
JD0 The date in Dynamical time corresponding to the initial epoch.
JD The date in Dynamical time corresponding to the final epoch.
CAAPrecession::PrecessEcliptic
static CAA2DCoordinate PrecessEcliptic(double Lambda, double Beta, double JD0, double JD)
Return Value
Returns the converted ecliptic coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the ecliptical longitude in degrees and the y value corresponds to the ecliptical latitude in degrees.
Parameters
Lambda The ecliptical longitude in degrees.
Beta The ecliptical latitude of the star in degrees.
JD0 The date in Dynamical time corresponding to the initial epoch.
JD The date in Dynamical time corresponding to the final epoch.
CAAPrecession::EquatorialPMToEcliptic
static CAA2DCoordinate EquatorialPMToEcliptic(double Alpha, double Delta, double Beta, double PMAlpha, double PMDelta, double Epsilon)
Return Value
Returns the converted ecliptic proper motions in a CAA2DCoordinate class. The x value in the class corresponds to the proper motion in ecliptical longitude in arc seconds per year and the y value corresponds to the proper motion in ecliptical latitude in arc seconds per year.
Parameters
Alpha The right ascension expressed as an hour angle.
Delta The declination in degrees.
Beta The ecliptical latitude of the star in degrees.
PMAlpha The proper motion in right ascension in arc seconds per year.
PMDelta The proper motion of the declination in arc seconds per year.
Epsilon The obliquity of the ecliptic in degrees.
CAAPrecession::AdjustPositionUsingUniformProperMotion
static CAA2DCoordinate AdjustPositionUsingUniformProperMotion(double t, double Alpha, double Delta, double PMAlpha, double PMDelta)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the right ascension expressed as an hour angle and the y value corresponds to the declination in degrees.
Parameters
t The number of years from the starting epoch, negative in the past and positive in the future.
Alpha The right ascension expressed as an hour angle.
Delta The declination in degrees.
PMAlpha The proper motion in right ascension in arc seconds per year.
PMDelta The proper motion in declination in arc seconds per year.
CAAPrecession::AdjustPositionUsingMotionInSpace
static CAA2DCoordinate AdjustPositionUsingMotionInSpace(double r, double deltar, double t, double Alpha, double Delta, double PMAlpha, double PMDelta)
Return Value
Returns the converted equatorial coordinates in a CAA2DCoordinate class. The x value in the class corresponds to the right ascension expressed as an hour angle and the y value corresponds to the declination in degrees.
Parameters
r The stars distance in parsecs.
deltar The radial velocity in km/s.
t The number of years from the starting epoch, negative in the past and positive in the future.
Alpha The right ascension expression as an hour angle.
Delta The declination in degrees.
PMAlpha The proper motion in right ascension in arc seconds per year.
PMDelta The proper motion in declination in arc seconds per year.
This class provides for conversion between apparent and true altitude above the horizon. This refers to Chapter 16 in the book.
Functions this class provides include:
CAARefraction::RefractionFromApparent
static double RefractionFromApparent(double Altitude, double Pressure = 1010, double Temperature = 10)
Return Value
the refraction in degrees.
Parameters
Altitude The apparent altitude in degrees.
Pressure The atmospheric pressure in millibars
Temperature The air temperature in degrees Celsius.
CAARefraction::RefractionFromTrue
static double RefractionFromTrue(double Altitude, double Pressure = 1010, double Temperature = 10)
Return Value
the refraction in degrees.
Parameters
Altitude The true altitude in degrees.
Pressure The atmospheric pressure in millibars
Temperature The air temperature in degrees Celsius.
This class provides for calculation of the time of rise, transit and set of a celestial body. This refers to Chapter 15 in the book.
Functions this class provides include:
static CAARiseTransitSetDetails Rise(double JD, double Alpha1, double Delta1, double Alpha2, double Delta2, double Alpha3, double Delta3, double Longitude, double Latitude, double h0)
Return Value
A class containing
bValid true if the object actually rises, transits and sets for the specified date. If false, this would imply that either the object is circumpolar or never rises high enough above the horizon.
Rise The time in decimal hours when the object rises
Transit The time in hours when the object transits
Set The time in hours when the object sets
Parameters
JD The Julian Day corresponding to that midnight Dynamical Time for the date when you want to perform the calculation.
Alpha1 The right ascension in hours of the object at time JD - 1 day
Delta1 The declination in degrees of the object at time JD - 1 day
Alpha2 The right ascension in hours of the object at time JD
Delta2 The declination in degrees of the object at time JD
Alpha3 The right ascension in hours of the object at time JD + 1 day
Delta3 The declination in degrees of the object at time JD + 1 day
Longitude The geographic longitude of the observer in degrees.
Latitude The geographic latitude of the observer in degrees.
h0 The "standard" altitude in degrees i.e. the geometric altitude of the centre of the body at the time of the apparent rising or setting. For stars and planets, you would normally use -0.5667 and for the Sun & Moon you would normally use -0.8333.
Remarks
Bear in mind that the times calculated for the phenomena are for the same UTC date. This means that when you are in a non GMT timezone, the calculated local times can be for the previous or next day. Please bear this issue in mind if you are generating an ephemeris of rise, transit and set times for a celestial object for a specific range of local dates. In this case, you will need to rerun the calculation for the previous or next UTC date if the calculated local date is not the same as the required local date.
Another wrinkle to how this method operates is that the same event can occur twice in the same day, even though this method does not provide a method to allow this to be easily obtained. For example, imagine you are located in the timezone PDT which is 4 hours behind GMT and you are calculating the times of sunset during the month of August, when PDT would be in effect. During this period, the length of the day is gradually reducing and the time of sunrise is getting earlier every day. Combined with the fact that calculated time of Sunset for this period is around 20:00 local time or midnight UTC, you get this interesting effect where Sunrise occurs just around midnight UTC and then again just before midnight the following day! If you use the following code:
You will observe the following output, which demonstrates this effect:
Your client code which uses this method will need to handle this situation itself.
This class provides for calculation of the heliocentric position of Saturn. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of positions of the principle moons of Saturn. This refers to Chapter 46 in the book.
Functions this class provides include:
static CAASaturnMoonsDetails Calculate(double JD)
Return Value
A class which itself contains a class for each moon. This contained class itself contains
TrueRectangularCoordinates The true 3D rectangular coordinates of the moon.
ApparentRectangularCoordinates The apparent 3D rectangular coordinates of the moon.
bInTransit A Boolean which if true means that the moon is in front of Saturn as viewed from the Earth otherwise false.
bInOccultation A Boolean which if true means that the moon is behind Saturn as viewed from the Earth otherwise false.
bInEclipse A Boolean which if true means that the moon is behind Saturn as viewed from the Sun otherwise false.
bInShadowTransit A Boolean which if true means that the moon is in front of Saturn as viewed from the Earth otherwise false.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of various parameters related to the Rings of Saturn. This refers to Chapter 45 in the book.
Functions this class provides include:
static CAASaturnRingDetails Calculate(double JD)
Return Value
A class containing
B The Saturnicentric latitude in degrees of the Earth referred to the plane of the ring.
Bdash The Saturnicentric latitude in degrees of the Sun referred to the plane of the ring.
P The geocentric position angle of the Northern semi minor axis of the apparent ellipse of the ring.
a The major axis of the outer edge of the outer ring in arc seconds.
b The minor axis of the outer edge of the outer ring in arc seconds.
DeltaU The difference in degrees between the Saturnicentric longitudes of the Sun and the Earth, measured in the plane of the ring. This quantity is required for the calculation of Saturn's magnitude.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for the calculation of sidereal time. This refers to Chapter 12 in the book.
Functions this class provides include:
CAASidereal::MeanGreenwichSiderealTime
static double MeanGreenwichSiderealTime(double JD)
Return Value
The Mean Greenwich Sidereal Time, that is, the Greenwich hour angle of the mean vernal point (the intersection of the ecliptic of the date with the mean equator of the date), expressed in hours.
Parameters
JD The Julian Day in Universal time to calculate for.
CAASidereal::ApparentGreenwichSiderealTime
static double ApparentGreenwichSiderealTime(double JD)
Return Value
The Apparent Greenwich Sidereal Time, that is, the Greenwich hour angle of the true vernal equinox, expressed in hours.
Parameters
JD The Julian Day in Universal time to calculate for.
This class provides for calculation of the combined magnitude of two stars. This refers to Chapter 56 in the book.
Functions this class provides include:
CAAStellarMagnitudes::CombinedMagnitude
static double CombinedMagnitude(double m1, double m2)
Return Value
the combined magnitude of two stars.
Parameters
m1 The magnitude of the first star.
m2 The magnitude of the second star.
CAAStellarMagnitudes::CombinedMagnitude
static double CombinedMagnitude(int Magnitudes, const double* pMagnitudes)
Return Value
the combined magnitude of more that two stars.
Parameters
Magnitudes The number of magnitudes to combine from "pMagnitudes".
magnitudes The sum of all the star magnitudes.
CAAStellarMagnitudes::BrightnessRatio
static double BrightnessRatio(double m1, double m2);
Return Value
the ratio of the apparent luminosities of the two stars.
Parameters
m1 The magnitude of the first star.
m2 The magnitude of the second star.
CAAStellarMagnitudes::MagnitudeDifference
static double MagnitudeDifference(double brightnessRatio)
Return Value
the difference in magnitude between the stars.
Parameters
brightnessRatio The ratio of the apparent luminosities of the two stars.
This class provides for calculation of the geocentric position of the Sun. This refers to Chapter 25 & 26 in the book.
Functions this class provides include:
EquatorialRectangularCoordinatesMeanEquinox
EclipticRectangularCoordinatesJ2000
EquatorialRectangularCoordinatesJ2000
EquatorialRectangularCoordinatesB1950
EquatorialRectangularCoordinatesAnyEquinox
CAASun::GeometricEclipticLongitude
static double GeometricEclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::GeometricEclipticLatitude
static double GeometricEclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::GeometricFK5EclipticLongitude
static double GeometricFK5EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::GeometricFK5EclipticLatitude
static double GeometricFK5EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::ApparentEclipticLongitude
static double ApparentEclipticLongitude(double JD)
Return Value
the apparent ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in theFK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::ApparentEclipticLatitude
static double ApparentEclipticLatitude(double JD)
Return Value
the apparent ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::EquatorialRectangularCoordinatesMeanEquinox
static CAA3DCoordinate EquatorialRectangularCoordinatesMeanEquinox(double JD)
Return Value
A class containing the equatorial 3D rectangular coordinates in astronomical units referred to the mean dynamical ecliptic and equinox of the date defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::EclipticRectangularCoordinatesJ2000
static CAA3DCoordinate EclipticRectangularCoordinatesJ2000(double JD)
Return Value
A class containing the ecliptic 3D rectangular coordinates in astronomical units referred to the J2000 equinox defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::EquatorialRectangularCoordinatesJ2000
static CAA3DCoordinate EquatorialRectangularCoordinatesJ2000(double JD)
Return Value
A class containing the equatorial 3D rectangular coordinates in astronomical units referred to the J2000 equinox defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::EquatorialRectangularCoordinatesB1950
static CAA3DCoordinate EquatorialRectangularCoordinatesJ2000(double JD)
Return Value
A class containing the equatorial 3D rectangular coordinates in astronomical units referred to the B1950 equinox defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
CAASun::EquatorialRectangularCoordinatesAnyEquinox
static CAA3DCoordinate EquatorialRectangularCoordinatesAnyEquinox(double JD, double JDEquinox)
Return Value
A class containing the equatorial 3D rectangular coordinates in astronomical units referred to the specified equinox defined in the FK5 theory.
Parameters
JD The date in Dynamical time to calculate for.
JDEquinox The date in Dynamical time specifying the equinox to use.
This class provides for calculation of the heliocentric position of Uranus. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
This class provides for calculation of the heliocentric position of Venus. This refers to Chapter 32 in the book.
Functions this class provides include:
static double EclipticLongitude(double JD)
Return Value
the ecliptic longitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double EclipticLatitude(double JD)
Return Value
the ecliptic latitude in degrees referred to the mean dynamical ecliptic and equinox of the date defined in the VSOP theory.
Parameters
JD The date in Dynamical time to calculate for.
static double RadiusVector(double JD)
Return Value
the radius vector in astronomical units.
Parameters
JD The date in Dynamical time to calculate for.
PJ Naughter
Email: pjna@naughter.com
Web: http://www.naughter.com
28 March 2009