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:
// 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:
// 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:
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 |