Skip to content

Latest commit

 

History

History
168 lines (161 loc) · 48.3 KB

index.md

File metadata and controls

168 lines (161 loc) · 48.3 KB

//astronomy/io.github.cosinekitty.astronomy

Package io.github.cosinekitty.astronomy

Types

Name Summary
Aberration
enum Aberration : Enum<Aberration>
Aberration calculation options.
ApsisInfo
class ApsisInfo(time: Time, kind: ApsisKind, distanceAu: Double)
An apsis event: pericenter (closest approach) or apocenter (farthest distance).
ApsisKind
enum ApsisKind : Enum<ApsisKind>
The type of apsis: pericenter (closest approach) or apocenter (farthest distance).
AtmosphereInfo
class AtmosphereInfo(pressure: Double, temperature: Double, density: Double)
Information about idealized atmospheric variables at a given elevation.
AxisInfo
class AxisInfo(ra: Double, dec: Double, spin: Double, north: Vector)
Information about a body's rotation axis at a given time.
Body
enum Body : Enum<Body>
The enumeration of celestial bodies supported by Astronomy Engine.
ConstellationInfo
class ConstellationInfo(symbol: String, name: String, ra1875: Double, dec1875: Double)
Reports the constellation that a given celestial point lies within.
DateTime
class DateTime(year: Int, month: Int, day: Int, hour: Int, minute: Int, second: Double)
A universal time resolved into UTC calendar date and time fields.
Direction
enum Direction : Enum<Direction>
Selects whether to search for a rising event or a setting event for a celestial body.
EarthNotAllowedException
class EarthNotAllowedException : Exception
The Earth is not allowed as the body parameter.
EclipseEvent
class EclipseEvent(time: Time, altitude: Double)
Holds a time and the observed altitude of the Sun at that time.
EclipseKind
enum EclipseKind : Enum<EclipseKind>
The different kinds of lunar/solar eclipses.
Ecliptic
data class Ecliptic(vec: Vector, elat: Double, elon: Double)
Ecliptic angular and Cartesian coordinates.
ElongationInfo
class ElongationInfo(time: Time, visibility: Visibility, elongation: Double, eclipticSeparation: Double)
Contains information about the visibility of a celestial body at a given date and time.
EquatorEpoch
enum EquatorEpoch : Enum<EquatorEpoch>
Selects the date for which the Earth's equator is to be used for representing equatorial coordinates.
Equatorial
class Equatorial(ra: Double, dec: Double, dist: Double, vec: Vector)
Equatorial angular and cartesian coordinates.
GlobalSolarEclipseInfo
class GlobalSolarEclipseInfo(kind: EclipseKind, obscuration: Double, peak: Time, distance: Double, latitude: Double, longitude: Double)
Reports the time and geographic location of the peak of a solar eclipse.
GravitySimulator
class GravitySimulator
A simulation of zero or more small bodies moving through the Solar System.
HourAngleInfo
class HourAngleInfo(time: Time, hor: Topocentric)
Information about a celestial body crossing a specific hour angle.
IlluminationInfo
class IlluminationInfo(time: Time, mag: Double, phaseAngle: Double, phaseFraction: Double, helioDist: Double, ringTilt: Double)
Information about the brightness and illuminated shape of a celestial body.
InternalError
class InternalError(message: String) : Exception
An unexpected internal error occurred in Astronomy Engine
InvalidBodyException
class InvalidBodyException(body: Body) : Exception
An invalid body was specified for the given function.
JupiterMoonsInfo
class JupiterMoonsInfo(io: StateVector, europa: StateVector, ganymede: StateVector, callisto: StateVector)
Holds the positions and velocities of Jupiter's major 4 moons.
LibrationInfo
data class LibrationInfo(elat: Double, elon: Double, mlat: Double, mlon: Double, distanceKm: Double, diamDeg: Double)
Lunar libration angles, returned by libration.
LocalSolarEclipseInfo
class LocalSolarEclipseInfo(kind: EclipseKind, obscuration: Double, partialBegin: EclipseEvent, totalBegin: EclipseEvent?, peak: EclipseEvent, totalEnd: EclipseEvent?, partialEnd: EclipseEvent)
Information about a solar eclipse as seen by an observer at a given time and geographic location.
LunarEclipseInfo
class LunarEclipseInfo(kind: EclipseKind, obscuration: Double, peak: Time, sdPenum: Double, sdPartial: Double, sdTotal: Double)
Information about a lunar eclipse.
MoonQuarterInfo
class MoonQuarterInfo(quarter: Int, time: Time)
A lunar quarter event (new moon, first quarter, full moon, or third quarter) along with its date and time.
NodeEventInfo
class NodeEventInfo(time: Time, kind: NodeEventKind)
Information about an ascending or descending node of a body.
NodeEventKind
enum NodeEventKind : Enum<NodeEventKind>
Indicates whether a crossing through the ecliptic plane is ascending or descending.
Observer
data class Observer(latitude: Double, longitude: Double, height: Double)
The location of an observer on (or near) the surface of the Earth.
PositionFunction
fun interface PositionFunction
A function for which to solve a light-travel time problem.
Refraction
enum Refraction : Enum<Refraction>
Selects whether to correct for atmospheric refraction, and if so, how.
RotationMatrix
class RotationMatrix(rot: Array<DoubleArray>)
A rotation matrix that can be used to transform one coordinate system to another.
SearchContext
fun interface SearchContext
Represents a function whose ascending root is to be found.
SeasonsInfo
class SeasonsInfo(marchEquinox: Time, juneSolstice: Time, septemberEquinox: Time, decemberSolstice: Time)
The dates and times of changes of season for a given calendar year.
Spherical
data class Spherical(lat: Double, lon: Double, dist: Double)
Spherical coordinates: latitude, longitude, distance.
StateVector
data class StateVector(x: Double, y: Double, z: Double, vx: Double, vy: Double, vz: Double, t: Time)
Represents a combined position vector and velocity vector at a given moment in time.
Time
class Time : Comparable<Time>
A date and time used for astronomical calculations.
Topocentric
data class Topocentric(azimuth: Double, altitude: Double, ra: Double, dec: Double)
Coordinates of a celestial body as seen by a topocentric observer.
TransitInfo
class TransitInfo(start: Time, peak: Time, finish: Time, separation: Double)
Information about a transit of Mercury or Venus, as seen from the Earth.
Vector
data class Vector(x: Double, y: Double, z: Double, t: Time)
A 3D Cartesian vector whose components are expressed in Astronomical Units (AU).
Visibility
enum Visibility : Enum<Visibility>
Indicates whether a body (especially Mercury or Venus) is best seen in the morning or evening.

Functions

Name Summary
angleFromSun
fun angleFromSun(body: Body, time: Time): Double
Returns the angle between the given body and the Sun, as seen from the Earth.
atmosphere
fun atmosphere(elevationMeters: Double): AtmosphereInfo
Calculates U.S. Standard Atmosphere (1976) variables as a function of elevation.
backdatePosition
fun backdatePosition(time: Time, observerBody: Body, targetBody: Body, aberration: Aberration): Vector
Solve for light travel time correction of apparent position.
baryState
fun baryState(body: Body, time: Time): StateVector
Calculates barycentric position and velocity vectors for the given body.
constellation
fun constellation(ra: Double, dec: Double): ConstellationInfo
Determines the constellation that contains the given point in the sky.
correctLightTravel
fun correctLightTravel(func: PositionFunction, time: Time): Vector
Solve for light travel time of a vector function.
defineStar
fun defineStar(body: Body, ra: Double, dec: Double, distanceLightYears: Double)
Assign equatorial coordinates to a user-defined star.
degreesToRadians
fun Double.degreesToRadians(): Double
Convert an angle expressed in degrees to an angle expressed in radians.
eclipticGeoMoon
fun eclipticGeoMoon(time: Time): Spherical
Calculates spherical ecliptic geocentric position of the Moon.
eclipticLongitude
fun eclipticLongitude(body: Body, time: Time): Double
Calculates heliocentric ecliptic longitude of a body.
elongation
fun elongation(body: Body, time: Time): ElongationInfo
Determines visibility of a celestial body relative to the Sun, as seen from the Earth.
equator
fun equator(body: Body, time: Time, observer: Observer, equdate: EquatorEpoch, aberration: Aberration): Equatorial
Calculates equatorial coordinates of a celestial body as seen by an observer on the Earth's surface.
equatorialToEcliptic
fun equatorialToEcliptic(eqj: Vector): Ecliptic
Converts a J2000 mean equator (EQJ) vector to a true ecliptic of date (ETC) vector and angles.
geoEmbState
fun geoEmbState(time: Time): StateVector
Calculates the geocentric position and velocity of the Earth/Moon barycenter.
geoMoon
fun geoMoon(time: Time): Vector
Calculates equatorial geocentric position of the Moon at a given time.
geoMoonState
fun geoMoonState(time: Time): StateVector
Calculates equatorial geocentric position and velocity of the Moon at a given time.
geoVector
fun geoVector(body: Body, time: Time, aberration: Aberration): Vector
Calculates geocentric Cartesian coordinates of a body in the J2000 equatorial system.
globalSolarEclipsesAfter
fun globalSolarEclipsesAfter(startTime: Time): Sequence<GlobalSolarEclipseInfo>
Enumerates a series of consecutive global solar eclipses that occur after a given time.
helioDistance
fun helioDistance(body: Body, time: Time): Double
Calculates the distance between a body and the Sun at a given time.
helioState
fun helioState(body: Body, time: Time): StateVector
Calculates heliocentric position and velocity vectors for the given body.
helioVector
fun helioVector(body: Body, time: Time): Vector
Calculates heliocentric Cartesian coordinates of a body in the J2000 equatorial system.
horizon
fun horizon(time: Time, observer: Observer, ra: Double, dec: Double, refraction: Refraction): Topocentric
Calculates the apparent location of a body relative to the local horizon of an observer on the Earth.
hourAngle
fun hourAngle(body: Body, time: Time, observer: Observer): Double
Finds the hour angle of a body for a given observer and time.
illumination
fun illumination(body: Body, time: Time): IlluminationInfo
Finds visual magnitude, phase angle, and other illumination information about a celestial body.
inverseRefractionAngle
fun inverseRefractionAngle(refraction: Refraction, bentAltitude: Double): Double
Calculates the inverse of an atmospheric refraction angle.
jupiterMoons
fun jupiterMoons(time: Time): JupiterMoonsInfo
Calculates jovicentric positions and velocities of Jupiter's largest 4 moons.
lagrangePoint
fun lagrangePoint(point: Int, time: Time, majorBody: Body, minorBody: Body): StateVector
Calculates one of the 5 Lagrange points for a pair of co-orbiting bodies.
lagrangePointFast
fun lagrangePointFast(point: Int, majorState: StateVector, majorMass: Double, minorState: StateVector, minorMass: Double): StateVector
Calculates one of the 5 Lagrange points from body masses and state vectors.
libration
fun libration(time: Time): LibrationInfo
Calculates the Moon's libration angles at a given moment in time.
localSolarEclipsesAfter
fun localSolarEclipsesAfter(startTime: Time, observer: Observer): Sequence<LocalSolarEclipseInfo>
Enumerates a series of consecutive local solar eclipses that occur after a given time.
lunarApsidesAfter
fun lunarApsidesAfter(startTime: Time): Sequence<ApsisInfo>
Enumerates a series of consecutive lunar apsides that occur after a given time.
lunarEclipsesAfter
fun lunarEclipsesAfter(startTime: Time): Sequence<LunarEclipseInfo>
Enumerates a series of consecutive lunar eclipses that occur after a given time.
massProduct
fun massProduct(body: Body): Double
Returns the product of mass and universal gravitational constant of a Solar System body.
moonNodesAfter
fun moonNodesAfter(startTime: Time): Sequence<NodeEventInfo>
Enumerates a series of consecutive ascending/descending nodes of the Moon.
moonPhase
fun moonPhase(time: Time): Double
Returns the Moon's phase as an angle from 0 to 360 degrees.
moonQuartersAfter
fun moonQuartersAfter(startTime: Time): Sequence<MoonQuarterInfo>
Enumerates a series of consecutive moon quarter phase events.
nextGlobalSolarEclipse
fun nextGlobalSolarEclipse(prevEclipseTime: Time): GlobalSolarEclipseInfo
Searches for the next global solar eclipse in a series.
nextLocalSolarEclipse
fun nextLocalSolarEclipse(prevEclipseTime: Time, observer: Observer): LocalSolarEclipseInfo
Searches for the next local solar eclipse in a series.
nextLunarApsis
fun nextLunarApsis(apsis: ApsisInfo): ApsisInfo
Finds the next lunar perigee or apogee event in a series.
nextLunarEclipse
fun nextLunarEclipse(prevEclipseTime: Time): LunarEclipseInfo
Searches for the next lunar eclipse in a series.
nextMoonNode
fun nextMoonNode(prevNode: NodeEventInfo): NodeEventInfo
Searches for the next time when the Moon's center crosses through the ecliptic plane.
nextMoonQuarter
fun nextMoonQuarter(mq: MoonQuarterInfo): MoonQuarterInfo
Continues searching for lunar quarters from a previous search.
nextPlanetApsis
fun nextPlanetApsis(body: Body, apsis: ApsisInfo): ApsisInfo
Finds the next planetary perihelion or aphelion event in a series.
nextTransit
fun nextTransit(body: Body, prevTransitTime: Time): TransitInfo
Searches for another transit of Mercury or Venus.
observerGravity
fun observerGravity(latitude: Double, height: Double): Double
Calculates the gravitational acceleration experienced by an observer on the Earth.
pairLongitude
fun pairLongitude(body1: Body, body2: Body, time: Time): Double
Returns one body's ecliptic longitude with respect to another, as seen from the Earth.
planetApsidesAfter
fun planetApsidesAfter(body: Body, startTime: Time): Sequence<ApsisInfo>
Enumerates a series of consecutive planetary perihelia/aphelia events.
planetOrbitalPeriod
fun planetOrbitalPeriod(body: Body): Double
Returns the average number of days it takes for a planet to orbit the Sun.
radiansToDegrees
fun Double.radiansToDegrees(): Double
Convert an angle expressed in radians to an angle expressed in degrees.
refractionAngle
fun refractionAngle(refraction: Refraction, altitude: Double): Double
Calculates the amount of "lift" to an altitude angle caused by atmospheric refraction.
rotationAxis
fun rotationAxis(body: Body, time: Time): AxisInfo
Calculates information about a body's rotation axis at a given time.
rotationEclEqd
fun rotationEclEqd(time: Time): RotationMatrix
Calculates a rotation matrix from J2000 mean ecliptic (ECL) to equatorial of-date (EQD).
rotationEclEqj
fun rotationEclEqj(): RotationMatrix
Calculates a rotation matrix from J2000 mean ecliptic (ECL) to J2000 mean equator (EQJ).
rotationEclHor
fun rotationEclHor(time: Time, observer: Observer): RotationMatrix
Calculates a rotation matrix from J2000 mean ecliptic (ECL) to horizontal (HOR).
rotationEctEqd
fun rotationEctEqd(time: Time): RotationMatrix
Calculates a rotation matrix from true ecliptic of date (ECT) to equator of date (EQD).
rotationEctEqj
fun rotationEctEqj(time: Time): RotationMatrix
Calculates a rotation matrix from true ecliptic of date (ECT) to J2000 mean equator (EQJ).
rotationEqdEcl
fun rotationEqdEcl(time: Time): RotationMatrix
Calculates a rotation matrix from equatorial of-date (EQD) to J2000 mean ecliptic (ECL).
rotationEqdEct
fun rotationEqdEct(time: Time): RotationMatrix
Calculates a rotation matrix from equator of date (EQD) to true ecliptic of date (ECT).
rotationEqdEqj
fun rotationEqdEqj(time: Time): RotationMatrix
Calculates a rotation matrix from equatorial of-date (EQD) to J2000 mean equator (EQJ).
rotationEqdHor
fun rotationEqdHor(time: Time, observer: Observer): RotationMatrix
Calculates a rotation matrix from equatorial of-date (EQD) to horizontal (HOR).
rotationEqjEcl
fun rotationEqjEcl(): RotationMatrix
Calculates a rotation matrix from J2000 mean equator (EQJ) to J2000 mean ecliptic (ECL).
rotationEqjEct
fun rotationEqjEct(time: Time): RotationMatrix
Calculates a rotation matrix from J2000 mean equator (EQJ) to true ecliptic of date (ECT).
rotationEqjEqd
fun rotationEqjEqd(time: Time): RotationMatrix
Calculates a rotation matrix from J2000 mean equator (EQJ) to equatorial of-date (EQD).
rotationEqjGal
fun rotationEqjGal(): RotationMatrix
Calculates a rotation matrix from galactic (GAL) to J2000 mean equator (EQJ).
rotationEqjHor
fun rotationEqjHor(time: Time, observer: Observer): RotationMatrix
Calculates a rotation matrix from J2000 mean equator (EQJ) to horizontal (HOR).
rotationGalEqj
fun rotationGalEqj(): RotationMatrix
Calculates a rotation matrix from galactic (GAL) to J2000 mean equator (EQJ).
rotationHorEcl
fun rotationHorEcl(time: Time, observer: Observer): RotationMatrix
Calculates a rotation matrix from horizontal (HOR) to J2000 mean ecliptic (ECL).
rotationHorEqd
fun rotationHorEqd(time: Time, observer: Observer): RotationMatrix
Calculates a rotation matrix from horizontal (HOR) to equatorial of-date (EQD).
rotationHorEqj
fun rotationHorEqj(time: Time, observer: Observer): RotationMatrix
Calculates a rotation matrix from horizontal (HOR) to J2000 equatorial (EQJ). This is one of the family of functions that returns a rotation matrix for converting from one orientation to another. Source: HOR = horizontal system (x=North, y=West, z=Zenith). Target: EQJ = equatorial system, using equator at the J2000 epoch.
search
fun search(time1: Time, time2: Time, toleranceSeconds: Double, func: SearchContext): Time?
Searches for a time at which a function's value increases through zero.
searchAltitude
fun searchAltitude(body: Body, observer: Observer, direction: Direction, startTime: Time, limitDays: Double, altitude: Double): Time?
Finds the next time the center of a body reaches a given altitude.
searchGlobalSolarEclipse
fun searchGlobalSolarEclipse(startTime: Time): GlobalSolarEclipseInfo
Searches for a solar eclipse visible anywhere on the Earth's surface.
searchHourAngle
fun searchHourAngle(body: Body, observer: Observer, hourAngle: Double, startTime: Time, direction: Int = +1): HourAngleInfo
Searches for the time when the center of a body reaches a specified hour angle as seen by an observer on the Earth.
searchLocalSolarEclipse
fun searchLocalSolarEclipse(startTime: Time, observer: Observer): LocalSolarEclipseInfo
Searches for a solar eclipse visible at a specific location on the Earth's surface.
searchLunarApsis
fun searchLunarApsis(startTime: Time): ApsisInfo
Finds the date and time of the Moon's perigee or apogee.
searchLunarEclipse
fun searchLunarEclipse(startTime: Time): LunarEclipseInfo
Searches for a lunar eclipse.
searchMaxElongation
fun searchMaxElongation(body: Body, startTime: Time): ElongationInfo
Finds a date and time when Mercury or Venus reaches its maximum angle from the Sun as seen from the Earth.
searchMoonNode
fun searchMoonNode(startTime: Time): NodeEventInfo
Searches for a time when the Moon's center crosses through the ecliptic plane.
searchMoonPhase
fun searchMoonPhase(targetLon: Double, startTime: Time, limitDays: Double): Time?
Searches for the time that the Moon reaches a specified phase.
searchMoonQuarter
fun searchMoonQuarter(startTime: Time): MoonQuarterInfo
Finds the first lunar quarter after the specified date and time. A lunar quarter is one of the following four lunar phase events: new moon, first quarter, full moon, third quarter. This function finds the lunar quarter that happens soonest after the specified date and time.
searchPeakMagnitude
fun searchPeakMagnitude(body: Body, startTime: Time): IlluminationInfo
Searches for the date and time Venus will next appear brightest as seen from the Earth.
searchPlanetApsis
fun searchPlanetApsis(body: Body, startTime: Time): ApsisInfo
Finds the first aphelion or perihelion for a planet after a given time.
searchRelativeLongitude
fun searchRelativeLongitude(body: Body, targetRelativeLongitude: Double, startTime: Time): Time
Searches for the time when the Earth and another planet are separated by a specified angle in ecliptic longitude, as seen from the Sun.
searchRiseSet
@JvmOverloads
fun searchRiseSet(body: Body, observer: Observer, direction: Direction, startTime: Time, limitDays: Double, metersAboveGround: Double = 0.0): Time?
Searches for the next time a celestial body rises or sets as seen by an observer on the Earth.
searchSunLongitude
fun searchSunLongitude(targetLon: Double, startTime: Time, limitDays: Double): Time?
Searches for the time when the Sun reaches an apparent ecliptic longitude as seen from the Earth.
searchTransit
fun searchTransit(body: Body, startTime: Time): TransitInfo
Searches for the first transit of Mercury or Venus after a given date.
seasons
fun seasons(year: Int): SeasonsInfo
Finds both equinoxes and both solstices for a given calendar year.
siderealTime
fun siderealTime(time: Time): Double
Calculates Greenwich Apparent Sidereal Time (GAST).
sunPosition
fun sunPosition(time: Time): Ecliptic
Calculates geocentric ecliptic coordinates for the Sun.
times
operator fun Double.times(vec: Vector): Vector
Multiply a scalar by a vector, yielding another vector.
transitsAfter
fun transitsAfter(body: Body, startTime: Time): Sequence<TransitInfo>
Enumerates a series of consecutive transits of Mercury or Venus.

Properties

Name Summary
AU_PER_LY
const val AU_PER_LY: Double = 63241.07708807546
The number of astronomical units per light-year.
C_AUDAY
const val C_AUDAY: Double = 173.1446326846693
The speed of light in AU/day.
CALLISTO_RADIUS_KM
const val CALLISTO_RADIUS_KM: Double = 2410.3
The mean radius of Jupiter's moon Callisto, expressed in kilometers.
DEG2RAD
const val DEG2RAD: Double = 0.017453292519943295
The factor to convert degrees to radians = pi/180.
EUROPA_RADIUS_KM
const val EUROPA_RADIUS_KM: Double = 1560.8
The mean radius of Jupiter's moon Europa, expressed in kilometers.
GANYMEDE_RADIUS_KM
const val GANYMEDE_RADIUS_KM: Double = 2631.2
The mean radius of Jupiter's moon Ganymede, expressed in kilometers.
HOUR2RAD
const val HOUR2RAD: Double = 0.26179938779914946
The factor to convert sidereal hours to radians = pi/12.
IO_RADIUS_KM
const val IO_RADIUS_KM: Double = 1821.6
The mean radius of Jupiter's moon Io, expressed in kilometers.
JUPITER_EQUATORIAL_RADIUS_KM
const val JUPITER_EQUATORIAL_RADIUS_KM: Double = 71492.0
The equatorial radius of Jupiter, expressed in kilometers.
JUPITER_MEAN_RADIUS_KM
const val JUPITER_MEAN_RADIUS_KM: Double = 69911.0
The volumetric mean radius of Jupiter, expressed in kilometers.
JUPITER_POLAR_RADIUS_KM
const val JUPITER_POLAR_RADIUS_KM: Double = 66854.0
The polar radius of Jupiter, expressed in kilometers.
KM_PER_AU
const val KM_PER_AU: Double = 1.4959787069098932E8
The number of kilometers in one astronomical unit (AU).
MILLISECONDS_PER_DAY
const val MILLISECONDS_PER_DAY: Double
The number of milliseconds in a day.
MINUTES_PER_DAY
const val MINUTES_PER_DAY: Double
The number of minutes in a day.
RAD2DEG
const val RAD2DEG: Double = 57.29577951308232
The factor to convert radians to degrees = 180/pi.
RAD2HOUR
const val RAD2HOUR: Double = 3.819718634205488
The factor to convert radians to sidereal hours = 12/pi.
SECONDS_PER_DAY
const val SECONDS_PER_DAY: Double
The number of seconds in a day.