Class AstroUtils
- java.lang.Object
-
- gaia.cu9.ari.gaiaorbit.util.coord.AstroUtils
-
public class AstroUtils extends java.lang.Object
Some astronomical goodies to get the position of the Sun, Moon, work out Julian dates, etc.
-
-
Field Summary
Fields Modifier and Type Field Description static float
EARTH_RADIUS
static long
J2000_MS
Milliseconds of J2000 in the scale of java.util.Datestatic double
JD_B1900
Julian date of B1900 epochstatic double
JD_J2000
Julian date of J2000 epoch (julian days since January 1, 4713 BCE)static double
JD_J2010
Julian date of TGAS epoch 2010-01-01T00:00:00static double
JD_J2015
Julian date of reference epoch J2015.0 = JD2455197.5 = 2015-01-01T00:00:00static double
JD_J2015_5
Julian date of the Gaia DR2 reference epoch, J2015.5 = JD2455197.5 = 2015-01-01T00:00:00static double
MU_SOL
-
Constructor Summary
Constructors Constructor Description AstroUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static int[]
getCalendarDay(double julianDate)
Gets the Gregorian calendar quantities given the Julian date.static double
getDayFraction(int hour, int min, int sec, int nanos)
Gets the day fraction from the day quantitiesstatic int[]
getDayQuantities(double dayFraction)
Gets the day quantities from the day fractionstatic double
getDaysSinceJ2000(java.time.Instant date)
Returns the elapsed days since the epoch J2000 until the given date.static Vector3d
getEclipticCoordinates(java.lang.String body, java.time.Instant instant, Vector3d out, boolean highAccuracy)
Deprecated.Should use the classes that extend IBodyCoordinates instead.static double
getJulianDate(int year, int month, int day, int hour, int min, int sec, int nanos, boolean gregorian)
Gets the Julian date number given the Gregorian calendar quantities.static double
getJulianDate(java.time.Instant instant)
static double
getJulianDateCache(java.time.Instant instant)
Gets the Julian Date for the given date.static double
getJulianDayNumberBook(int year, int month, int day)
Deprecated.This does not work well!static double
getJulianDayNumberWikipediaGregorianCalendar(int year, int month, int day)
Returns the Julian day number of a date in the Gregorian calendar.static double
getJulianDayNumberWikipediaJulianCalendar(int year, int month, int day)
Returns the Julian day number of a date in the Julian calendar.static double
getMsSince(java.time.Instant date, double epoch_jd)
Returns the elapsed milliseconds since the given julian date jd until the given date.static double
getMsSinceJ2000(java.time.Instant date)
Returns the elapsed milliseconds since the epoch J2000 until the given date.static double
getMsSinceJ2010(java.time.Instant date)
Returns the elapsed milliseconds since the epoch J2010 until the given date.static double
getMsSinceJ2015(java.time.Instant date)
Returns the elapsed milliseconds since the epoch J2015 until the given date.static double
getSunDistance(double jd)
static double
getSunDistance(java.time.Instant date)
Algorithm in "Astronomical Algorithms" book by Jean Meeus.static double
getSunLongitude(java.time.Instant date)
Returns the Sun's ecliptic longitude in degrees for the given time.static double
getSunLongitudeWikipedia(double jd)
Gets the ecliptic longitude of the Sun in degrees as published in Wikipedia.static java.time.Instant
julianDateToInstant(double jd)
static Vector3d
moonEclipticCoordinates(double julianDate, Vector3d out)
Algorithm in "Astronomical Algorithms" book by Jean Meeus.static Vector3d
moonEclipticCoordinates(java.time.Instant date, Vector3d out)
Algorithm in "Astronomical Algorithms" book by Jean Meeus.static void
moonEquatorialCoordinates(Vector3d placeholder, double julianDate)
Algorithm in "Astronomical Algorithms" book by Jean Meeus.static void
moonEquatorialCoordinates(Vector3d placeholder, java.time.Instant date)
Algorithm in "Astronomical Algorithms" book by Jean Meeus.static double
obliquity(double julianDate)
Returns the obliquity of the ecliptic (inclination of the Earth's axis of rotation) for a given date, in degreesstatic Vector3d
plutoEclipticCoordinates(double d, Vector3d out)
Ecliptic coordinates of pluto at the given date.static Vector3d
plutoEclipticCoordinates(java.time.Instant date, Vector3d out)
Ecliptic coordinates of pluto at the given datestatic Vector3d
properMotionsToCartesian(double mualphastar, double mudelta, double radvel, double ra, double dec, double distpc)
Converts proper motions + radial velocity into a cartesian vector.static double
T(double julianDate)
Time T measured in Julian centuries from the Epoch J2000.0static double
tau(double julianDate)
-
-
-
Field Detail
-
JD_J2000
public static final double JD_J2000
Julian date of J2000 epoch (julian days since January 1, 4713 BCE)- See Also:
- Constant Field Values
-
JD_J2015
public static final double JD_J2015
Julian date of reference epoch J2015.0 = JD2455197.5 = 2015-01-01T00:00:00- See Also:
- Constant Field Values
-
JD_J2015_5
public static final double JD_J2015_5
Julian date of the Gaia DR2 reference epoch, J2015.5 = JD2455197.5 = 2015-01-01T00:00:00- See Also:
- Constant Field Values
-
JD_J2010
public static final double JD_J2010
Julian date of TGAS epoch 2010-01-01T00:00:00- See Also:
- Constant Field Values
-
JD_B1900
public static final double JD_B1900
Julian date of B1900 epoch- See Also:
- Constant Field Values
-
J2000_MS
public static final long J2000_MS
Milliseconds of J2000 in the scale of java.util.Date
-
EARTH_RADIUS
public static final float EARTH_RADIUS
- See Also:
- Constant Field Values
-
MU_SOL
public static final double MU_SOL
- See Also:
- Constant Field Values
-
-
Method Detail
-
getSunDistance
public static double getSunDistance(java.time.Instant date)
Algorithm in "Astronomical Algorithms" book by Jean Meeus. Finds out the distance from the Sun to the Earth in Km- Parameters:
date
- The date- Returns:
- The distancee from the Sun to the Earth in Km
-
getSunDistance
public static double getSunDistance(double jd)
-
getSunLongitude
public static double getSunLongitude(java.time.Instant date)
Returns the Sun's ecliptic longitude in degrees for the given time. Caches the last Sun's longitude for future use.- Parameters:
date
- The time for which the longitude must be calculated- Returns:
- The Sun's longitude in [deg]
-
getSunLongitudeWikipedia
public static double getSunLongitudeWikipedia(double jd)
Gets the ecliptic longitude of the Sun in degrees as published in Wikipedia.- Parameters:
jd
- The Julian date for which to calculate the latitude.- Returns:
- The ecliptic longitude of the Sun at the given Julian date, in degrees.
- See Also:
- http://en.wikipedia.org/wiki/Position_of_the_Sun
-
moonEquatorialCoordinates
public static void moonEquatorialCoordinates(Vector3d placeholder, java.time.Instant date)
Algorithm in "Astronomical Algorithms" book by Jean Meeus. Returns a vector with the equatorial longitude (α) in radians, the equatorial latitude (δ) in radians and the distance in kilometers.- Parameters:
date
-
-
moonEquatorialCoordinates
public static void moonEquatorialCoordinates(Vector3d placeholder, double julianDate)
Algorithm in "Astronomical Algorithms" book by Jean Meeus. Returns a vector with the equatorial longitude (α) in radians, the equatorial latitude (δ) in radians and the distance in kilometers.- Parameters:
julianDate
-
-
moonEclipticCoordinates
public static Vector3d moonEclipticCoordinates(java.time.Instant date, Vector3d out)
Algorithm in "Astronomical Algorithms" book by Jean Meeus. Returns a vector with the ecliptic longitude (λ) in radians, the ecliptic latitude (β) in radians and the distance in kilometers.- Parameters:
date
-out
- The output vector.- Returns:
- The output vector, for chaining.
-
moonEclipticCoordinates
public static Vector3d moonEclipticCoordinates(double julianDate, Vector3d out)
Algorithm in "Astronomical Algorithms" book by Jean Meeus. Returns a vector with the ecliptic longitude (λ) in radians, the ecliptic latitude (β) in radians and the distance between the centers of the Earth and the Moon in kilometers.- Parameters:
julianDate
-out
- The output vector with geocentric longitude (lambda) [rad], geocentric latitude (beta) [rad], distance between the centers of the Earth and the Moon [km]- Returns:
- The output vector, for chaining.
-
plutoEclipticCoordinates
public static Vector3d plutoEclipticCoordinates(java.time.Instant date, Vector3d out)
Ecliptic coordinates of pluto at the given date- Parameters:
date
- The dateout
- The out vector- Returns:
- Ecliptic coordinates of Pluto at the given julian date
-
plutoEclipticCoordinates
public static Vector3d plutoEclipticCoordinates(double d, Vector3d out)
Ecliptic coordinates of pluto at the given date. See http://www.stjarnhimlen.se/comp/ppcomp.html- Parameters:
d
- Julian dateout
- The out vector- Returns:
- Ecliptic coordinates of Pluto at the given julian date
-
getEclipticCoordinates
public static Vector3d getEclipticCoordinates(java.lang.String body, java.time.Instant instant, Vector3d out, boolean highAccuracy)
Deprecated.Should use the classes that extend IBodyCoordinates instead.Returns a vector with the heliocentric ecliptic latitude and longitude in radians and the distance in internal units.- Parameters:
body
- The body.instant
- The date to get the position.out
- The output vectorhighAccuracy
- Whether to use the full precision algorithms or skip some terms for speed- Returns:
- The output vector with L, B and R, for chaining.
-
getJulianDate
public static double getJulianDate(int year, int month, int day, int hour, int min, int sec, int nanos, boolean gregorian)
Gets the Julian date number given the Gregorian calendar quantities.- Parameters:
year
-month
-day
-hour
-min
-sec
-nanos
-gregorian
- Whether to use the Gregorian or the Julian calendar- Returns:
- The julian date number
-
getJulianDateCache
public static double getJulianDateCache(java.time.Instant instant)
Gets the Julian Date for the given date. It uses a cache.- Parameters:
instant
- The date.- Returns:
- The Julian Date.
-
getJulianDate
public static double getJulianDate(java.time.Instant instant)
-
getMsSinceJ2010
public static double getMsSinceJ2010(java.time.Instant date)
Returns the elapsed milliseconds since the epoch J2010 until the given date. Can be negavite.- Parameters:
date
- The date- Returns:
- The elapsed milliseconds
-
getMsSinceJ2000
public static double getMsSinceJ2000(java.time.Instant date)
Returns the elapsed milliseconds since the epoch J2000 until the given date. Can be negavite.- Parameters:
date
- The date- Returns:
- The elapsed milliseconds
-
getDaysSinceJ2000
public static double getDaysSinceJ2000(java.time.Instant date)
Returns the elapsed days since the epoch J2000 until the given date. Can be negavite.- Parameters:
date
- The date- Returns:
- The elapsed days
-
getMsSinceJ2015
public static double getMsSinceJ2015(java.time.Instant date)
Returns the elapsed milliseconds since the epoch J2015 until the given date. Can be negavite.- Parameters:
date
- The date- Returns:
- The elapsed milliseconds
-
getMsSince
public static double getMsSince(java.time.Instant date, double epoch_jd)
Returns the elapsed milliseconds since the given julian date jd until the given date. Can be negative- Parameters:
date
- The dateepoch_jd
- The reference epoch in julian days- Returns:
- The elapsed milliseconds
-
getCalendarDay
public static int[] getCalendarDay(double julianDate)
Gets the Gregorian calendar quantities given the Julian date.- Parameters:
julianDate
- The Julian date- Returns:
- Vector with {year, month, day, hour, min, sec, nanos}
-
getJulianDayNumberBook
public static double getJulianDayNumberBook(int year, int month, int day)
Deprecated.This does not work well!Returns the Julian day number. Uses the method shown in "Astronomical Algorithms" by Jean Meeus.- Parameters:
year
- The yearmonth
- The month in [1:12]day
- The day in the month, starting at 1- Returns:
- The Julian date
-
getJulianDayNumberWikipediaGregorianCalendar
public static double getJulianDayNumberWikipediaGregorianCalendar(int year, int month, int day)
Returns the Julian day number of a date in the Gregorian calendar. Uses Wikipedia's algorithm.- Parameters:
year
- The yearmonth
- The month in [1:12]day
- The day in the month, starting at 1- Returns:
- The Julian date
- See Also:
- http://en.wikipedia.org/wiki/Julian_day
-
getJulianDayNumberWikipediaJulianCalendar
public static double getJulianDayNumberWikipediaJulianCalendar(int year, int month, int day)
Returns the Julian day number of a date in the Julian calendar. Uses Wikipedia's algorithm.- Parameters:
year
- The yearmonth
- The month in [1:12]day
- The day in the month, starting at 1- Returns:
- The Julian date
- See Also:
- http://en.wikipedia.org/wiki/Julian_day
-
julianDateToInstant
public static java.time.Instant julianDateToInstant(double jd)
-
getDayFraction
public static double getDayFraction(int hour, int min, int sec, int nanos)
Gets the day fraction from the day quantities- Parameters:
hour
- The hour in 0-24min
- The minute in 0-1440sec
- The second in 0-86400nanos
- The nanoseconds- Returns:
- The day fraction
-
getDayQuantities
public static int[] getDayQuantities(double dayFraction)
Gets the day quantities from the day fraction- Parameters:
dayFraction
-- Returns:
- [hours, minutes, seconds, nanos]
-
obliquity
public static double obliquity(double julianDate)
Returns the obliquity of the ecliptic (inclination of the Earth's axis of rotation) for a given date, in degrees- Returns:
- The obliquity in degrees
-
T
public static double T(double julianDate)
Time T measured in Julian centuries from the Epoch J2000.0- Parameters:
julianDate
- The julian date- Returns:
- The time in julian centuries
-
tau
public static double tau(double julianDate)
-
properMotionsToCartesian
public static Vector3d properMotionsToCartesian(double mualphastar, double mudelta, double radvel, double ra, double dec, double distpc)
Converts proper motions + radial velocity into a cartesian vector. See this article.- Parameters:
mualphastar
- Mu alpha star, in mas/yrmudelta
- Mu delta, in mas/yrradvel
- Radial velocity in km/sra
- Right ascension in radiansdec
- Declination in radiansdistpc
- Distance in parsecs to the star- Returns:
- The proper motion vector in internal_units/year
-
-