Files
astronomy/generate/csdown/csharp_prefix.md
2023-11-10 12:25:52 -05:00

12 KiB

Astronomy Engine (C#)

This is the complete programming reference for the C# version of Astronomy Engine. Other programming languages are supported. See the home page for more info.


Quick Start

NuGet

Astronomy Engine is available as a NuGet package that targets .NET Standard 2.0. This means you can use the same NuGet package in your .NET Framework 4+ or .NET Core 5+ projects.

Alternatively, you can include Astronomy Engine in your own C# program by copying the source file astronomy.cs from this directory into your own project.

To get started quickly, here are some examples.


Contents


Topic Index

Position of Sun, Moon, and planets

Function Description
HelioVector Calculates body position vector with respect to the center of the Sun.
GeoVector Calculates body position vector with respect to the center of the Earth.
Equator Calculates right ascension and declination.
EquatorialToEcliptic Converts J2000 mean equator (EQJ) coordinates to true ecliptic of date (ECT) coordinates.
EclipticLongitude Calculates true ecliptic of date (ECT) longitude for a body.
Horizon Calculates horizontal coordinates (azimuth, altitude) for a given observer on the Earth.
PairLongitude Calculates the difference in apparent ecliptic longitude between two bodies, as seen from the Earth.
BaryState Calculates the barycentric position and velocity vectors of the Sun or a planet.

Geographic helper functions

Function Description
ObserverVector Calculates a vector from the center of the Earth to an observer on the Earth's surface.
VectorObserver Calculates the geographic coordinates for a geocentric equatorial vector.

Rise, set, and culmination times

Function Description
SearchRiseSet Finds time of rise or set for a body as seen by an observer on the Earth.
SearchAltitude Finds time when a body reaches a given altitude above or below the horizon. Useful for finding civil, nautical, or astronomical twilight.
SearchHourAngle Finds when body reaches a given hour angle for an observer on the Earth. Hour angle = 0 finds culmination, the highest point in the sky.

Moon phases

Function Description
MoonPhase Determines the Moon's phase expressed as an ecliptic longitude.
SearchMoonPhase Finds the next instance of the Moon reaching a specific ecliptic longitude separation from the Sun.
SearchMoonQuarter Finds the first quarter moon phase after a given date and time.
NextMoonQuarter Finds the next quarter moon phase after a previous one that has been found.

Eclipses and Transits

Function Description
SearchLunarEclipse Search for the first lunar eclipse after a given date.
NextLunarEclipse Continue searching for more lunar eclipses.
SearchGlobalSolarEclipse Search for the first solar eclipse after a given date that is visible anywhere on the Earth.
NextGlobalSolarEclipse Continue searching for solar eclipses visible anywhere on the Earth.
SearchLocalSolarEclipse Search for the first solar eclipse after a given date that is visible at a particular location on the Earth.
NextLocalSolarEclipse Continue searching for solar eclipses visible at a particular location on the Earth.
SearchTransit Search for the next transit of Mercury or Venus.
NextTransit Continue searching for transits of Mercury or Venus.

Lunar perigee and apogee

Function Description
SearchLunarApsis Finds the next perigee or apogee of the Moon after a specified date.
NextLunarApsis Given an already-found apsis, finds the next perigee or apogee of the Moon.

Planet perihelion and aphelion

Function Description
SearchPlanetApsis Finds the next perihelion or aphelion of a planet after a specified date.
NextPlanetApsis Given an already-found apsis, finds the next perihelion or aphelion of a planet.

Visual magnitude and elongation

Function Description
Illumination Calculates visual magnitude and phase angle of bodies as seen from the Earth.
SearchPeakMagnitude Searches for the date and time Venus will next appear brightest as seen from the Earth.
AngleFromSun Returns full angle seen from Earth between body and Sun.
Elongation Calculates ecliptic longitude angle between a body and the Sun, as seen from the Earth.
SearchMaxElongation Searches for the next maximum elongation event for Mercury or Venus that occurs after the given date.

Oppositions and conjunctions

Function Description
SearchRelativeLongitude Finds oppositions and conjunctions of planets.

Equinoxes, solstices, and apparent solar motion

Function Description
SearchSunLongitude Finds the next time the Sun reaches a specified apparent ecliptic longitude in the true ecliptic of date (ECT) system.
Seasons Finds the equinoxes and solstices for a given calendar year.
SunPosition Calculates the Sun's apparent true ecliptic of date (ECT) coordinates as seen from the Earth.

Coordinate transforms

The following orientation systems are supported. Astronomy Engine can convert a vector from any of these orientations to any of the others. It also allows converting from a vector to spherical (angular) coordinates and back, within a given orientation. Note the 3-letter codes for each of the orientation systems; these are used in function and type names.

  • EQJ = J2000 Mean Equator: Uses the Earth's mean equator (corrected for precession but ignoring nutation) on January 1, 2000, at noon UTC. This moment in time is called J2000.
  • EQD = True Equator of Date: Uses the Earth's equator on a given date and time, adjusted for precession and nutation.
  • ECL = J2000 Mean Ecliptic: Uses the plane of the Earth's orbit around the Sun at J2000. The x-axis is referenced against the J2000 mean equinox.
  • ECT = True Ecliptic of Date: Uses the true (corrected for precession and nutation) orbital plane of the Earth on the given date. The x-axis is referenced against the true equinox for that date.
  • HOR = Horizontal: Uses the viewpoint of an observer at a specific location on the Earth at a given date and time.
  • GAL = Galactic: Based on the IAU 1958 definition of galactic coordinates.
Function Description
RotateVector Applies a rotation matrix to a vector, yielding a vector in another orientation system.
InverseRotation Given a rotation matrix, finds the inverse rotation matrix that does the opposite transformation.
CombineRotation Given two rotation matrices, returns a rotation matrix that combines them into a net transformation.
IdentityMatrix Returns a 3x3 identity matrix, which can be used to form other rotation matrices.
Pivot Transforms a rotation matrix by pivoting it around a given axis by a given angle.
VectorFromSphere Converts spherical coordinates to Cartesian coordinates.
SphereFromVector Converts Cartesian coordinates to spherical coordinates.
EquatorFromVector Given an equatorial vector, calculates equatorial angular coordinates.
VectorFromHorizon Given apparent angular horizontal coordinates, calculates horizontal vector.
HorizonFromVector Given a vector in horizontal orientation, calculates horizontal angular coordinates.
Rotation_EQD_EQJ Calculates a rotation matrix from true equator of date (EQD) to J2000 mean equator (EQJ).
Rotation_EQD_ECT Calculates a rotation matrix from true equator of date (EQD) to true ecliptic of date (ECT).
Rotation_EQD_ECL Calculates a rotation matrix from true equator of date (EQD) to J2000 mean ecliptic (ECL).
Rotation_EQD_HOR Calculates a rotation matrix from true equator of date (EQD) to horizontal (HOR).
Rotation_EQJ_EQD Calculates a rotation matrix from J2000 mean equator (EQJ) to true equator of date (EQD).
Rotation_EQJ_ECT Calculates a rotation matrix from J2000 mean equator (EQJ) to true ecliptic of date (ECT).
Rotation_EQJ_ECL Calculates a rotation matrix from J2000 mean equator (EQJ) to J2000 mean ecliptic (ECL).
Rotation_EQJ_HOR Calculates a rotation matrix from J2000 mean equator (EQJ) to horizontal (HOR).
Rotation_ECT_EQD Calculates a rotation matrix from true ecliptic of date (ECT) to true equator of date (EQD).
Rotation_ECT_EQJ Calculates a rotation matrix from true ecliptic of date (ECT) J2000 mean equator (EQJ).
Rotation_ECL_EQD Calculates a rotation matrix from J2000 mean ecliptic (ECL) to true equator of date (EQD).
Rotation_ECL_EQJ Calculates a rotation matrix from J2000 mean ecliptic (ECL) to J2000 mean equator (EQJ).
Rotation_ECL_HOR Calculates a rotation matrix from J2000 mean ecliptic (ECL) to horizontal (HOR).
Rotation_HOR_EQD Calculates a rotation matrix from horizontal (HOR) to true equator of date (EQD).
Rotation_HOR_EQJ Calculates a rotation matrix from horizontal (HOR) to J2000 equatorial (EQJ).
Rotation_HOR_ECL Calculates a rotation matrix from horizontal (HOR) to J2000 mean ecliptic (ECL).
Rotation_EQJ_GAL Calculates a rotation matrix from J2000 mean equator (EQJ) to galactic (GAL).
Rotation_GAL_EQJ Calculates a rotation matrix from galactic (GAL) to J2000 mean equator (EQJ).

Gravitational simulation of small bodies

Astronomy Engine provides a GravitySimulator class that allows you to model the trajectories of one or more small bodies like asteroids, comets, or coasting spacecraft. If you know an initial position vector and velocity vector for a small body, the gravity simulator can incrementally simulate the pull of gravity on it from the Sun and planets, to calculate its movement through the Solar System.