Astronomical Calculations

function Aphelion(JD,Body)

Returns the instant of first aphelion passage of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune.

// add next instant of Mars' aphelion passage to list
Add(Aphelion(Now,Mars));

function AutumnEquinox(Year)

Returns the instant of autumnal equinox in the specified year as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

// create a time control list containig the instants of 
// autumnal equnox for the years 1900-2100
var Year: integer;
begin
  for Year:=1900 to 2100 do 
    Add(AutumnEquinox(Year));
end;

function BeginOfBesselianYear(Year)

Returns the instant of the begin of the Besselian year in the specified year as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

 

function Conjunction(JD,Body)

Returns the instant of first (geocentric) conjunction of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mars, Jupiter, Saturn, Uranus, Neptune.

  // assign instant of first conjunction of Jupiter after 1 Jan 2007  
  JD0 := Conjunction(JD('2007-01-01'),Jupiter); 

function Culmination(JD,Body)

Returns the instant of first culmination of the specified body within 24 hours following JD. The result is given as a Julian day number in universal time. The parameter body may specify the sun, moon, or a planet. Allowed values are: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune.

 

function GrEastElongation(JD,Body)

Returns the instant of next greatest eastern elongation of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mercury, Venus.

// create a time control list, containing the instants of Venus'
// greatest eastern eleongations 1900-2100
begin
  TimeScale := UT;
  TimeShift := StdTimeZone;
  JD0 := '1900-01-01';  // starting date
  repeat    
    JD0 := GrEastElongation(JD0,Venus);  // calculate instant
    Add(JD0);                            // add to list
    JD0 := JD0 + VenSynodic - 100.0;     // prepare next calculation
  until YearFromJD(JD0) >= 2100;
  GoTo(Now);
end;

function GrWestElongation(JD,Body)

Returns the instant of next greatest western elongation of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mercury, Venus.

 

function InfConjunction(JD,Body)

Returns the instant of first (geocentric) inferior conjunction of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mercury, Venus.

 

function LunarApogee(JD)

Returns the instant of first lunar apogee passage following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

 

function LunarNode(JD,Node)

Returns the instant of first lunar node passage following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time. The parameter phase specifies the kind of node passage to be calculated:

Ascending passage of ascending node
Descending passage of descending node

// assign instant of moon's ascending node passage after 1 Jan 1800
// JD0 := LunarNode(JD('1800-01-01'),Ascending);

function LunarPerigee(JD)

Returns the instant of first lunar perigee passage following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

 

function LunarPhase(JD,Phase)

Returns the instant of first lunar phase following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time. The parameter phase specifies the kind of lunar phase to be calculated:

New new moon
First first quarter
Full full moon
Last last quarter
Example

// create a time control list containig the times of new moon 
// of the current year
var
  i   : integer;
  year: integer;
  JD  : double;
begin
  TimeScale := UT;
  TimeShift := StdTimeZone;
  year := YearFromJD(Now);              // determine current year
  // perform the calculation
  JD := JulianDay(year,1,1,0,0,0)-5.0;  // 5 days prior to Jan 1
  for i:= 1 to 13 do begin
    JD := LunarPhase(JD,New);           // calculate instant
    Add(JD);                            // add to list
    JD := JD + 5.0;                     // prepare next calculation (go ahead 5 days)
  end;
end;

function Node(JD,Body,Node)

Returns the instant of first node passage of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time. The parameter phase specifies the kind of node passage to be calculated:

Ascending passage of ascending node
Descending passage of descending node

The parameter body specifies the planet. Allowed values are: Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune.

 

function Oppositon(JD,Body)

Returns the instant of first (geocentric) opposition of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mars, Jupiter, Saturn, Uranus, Neptune.

// create a time control list, containing the instants of Mars'
// oppositions 1300-1800
begin
  TimeScale := UT;
  TimeShift := StdTimeZone;
  JD0 := '1300-01-01';  // starting date
  repeat    
    JD0 := Opposition(JD0,Mars);        // calculate instant
    Add(JD0);                           // add to list
    JD0 := JD0 + MarSynodic - 100.0;    // prepare next calculation
  until YearFromJD(JD0) > 1800;
  GoTo(JD('1600-01-01'));               // go to instant nearest to 1 Jan 1600 (1600-01-29)
end;

function Perihelion(JD,Body)

Returns the instant of first perihelion passage of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune.

 

function Rise(JD,Body)

Returns the instant of first rise of the specified body within 24 hours following JD. The result is given as a Julian day number in universal time. If the specified body does not rise within 24 hours after JD, the function returns -1. The parameter body may specify the sun, moon, or a planet. Allowed values are: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune.

// create a time control list containig Venus' rise times over a year
var
  year: integer;
  JD  : float;
  JDR : float;  
  i   : integer;
begin
  TimeScale := UT;  // time scale UT
  TimeShift := StdTimeZone;  // use observer's standard time zone information
  year := YearFromJD(Now);   // determine current year
  year := Input(50,150,'Enter year number',year);  // ask for year number (current year is default)
  JD   := JulianDay(year,1,1,0,0,0);               // starting date
  for i:= 1 to 365 do begin                        // 365 days
    JDR := Rise(JD,Sun);        // first rise after JD within 24 hours
    if JDR > 0.0 then begin     // culmination
      Add(JDR);                 // add to list
      JD := JDR + 0.5;          // prepare next calculation
    end else
      JD := JD + 1.0;           // no rise: skip day
  end;
  Goto(Now);
end;

function Set(JD,Body)

Returns the instant of first set of the specified body within 24 hours following JD. The result is given as a Julian day number in universal time. If the specified body does not set within 24 hours after JD, the function returns -1. The parameter body may specify the sun, moon, or a planet. Allowed values are: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune.

 

function SpringEquinox(Year)

Returns the instant of spring equinox in the specified year as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

// create a time control list containig the instants of 
// spring equnox for the years 1500-2500
var Year: integer;
begin
  for Year:=1500 to 2500 do 
    Add(SpringEquinox(Year));
end;

function SummerSolstice(Year)

Returns the instant of summer solstice in the specified year as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

 

function SupConjunction(JD,Body)

Returns the instant of first (geocentric) superior conjunction of the specified body following JD as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.

The parameter body specifies the planet. Allowed values are: Mercury, Venus.

 

function WinterSolstice(Year)

Returns the instant of winter solstice in the specified year as a Julian day number. The current time scale ist taken into account (see TimeScale), meaning the result is either given as ephemeris time or universal time.


Alcyone Ephemeris Documentation
(C) 2007 Alcyone Software