NAME
Astro::Utils - Provides utility functions for astronomical calculations
SYNOPSIS
use Astro::Utils :ALL;
my $x = 1.234;
my $y = 5.5678;
say Frac $x; # OUTPUT: «0.234»
say Modulo $x, $y; # OUTPUT: «1.234»
say Modulo $y, $x; # OUTPUT: «0.6318»
DESCRIPTION
Raku module Astro::Utils is a collection of utility functions from several popular astronomy-related books by authors such as Montenbruck, Meeus, and Lawrence. Also included are functions from Perl module Astro::Montenbruck.
Exported functions
Frac
sub Frac($x --> Real) is export(:Frac) {...}
Returns the fractional part of a number (from Ref. 1, p. 8). (Note it is the same as the frac
function from Raku module Math::FractionalPart
.)
Modulo
sub Modulo($x, $y) is export(:Modulo) {...}
Returns $x mod $y (from Ref. 1, p. 8). (Note it is the same as the Raku infix operator %
.)
delta-T
sub delta-T($year, $month --> Real) is export(:delta-T) {...}
Returns the delta-T
value for the given year and month.
From https://eclipse.gsfc.nasa.gov/SEhelp/deltatpoly2004.html:
The orbital positions of the Sun and Moon required by eclipse predictions, are calculated using Terrestrial Dynamical Time (TD) because it is a uniform time scale. However, world time zones and daily life are based on Universal Time[1] (UT). In order to convert eclipse predictions from TD to UT, the difference between these two time scales must be known. The parameter delta-T (ΔT) is the arithmetic difference, in seconds, between the two as:
ΔT = TD - UT
delta-T2
sub delta-T2(DateTime $T --> Real) is export(:delta-T2) {...}
Also returns ΔT (see routine delta-T
), but using code based on the delta_t
function from Ref. 3, file '../Time/DeltaT.pm'.
dayfrac2hms
sub dayfrac2hms($dayfraction is copy --> List) is export(:dayfrac2hms) {...}
Returns the $dayfraction
as a list of hours
(Int), minutes
(Int), and minutes
(Real) (from Ref. 2).
$dayfraction
must be a fraction of a day of 24 hours. The input's integral portion, if any, is ignored.
polynome
sub polynome($t, @terms) is export(:polynome) {...}
Calculates the polynomial a0*t**0 + a1*t**1 + a2*t**2 + a3*t**3...
using code based on the polynome
function from Ref. 3, file '../Montenbruck/MathUtils.pm'.
Parameters: $t
is the coefficient (in astronomical routines it's usually time in centuries) and @terms
is a list of any number of decimal values.
References
Astronomy on the Personal Computer, 4th Edition, Oliver Montenbruck and Thomas Pfleger, 2000, Springer-Verlag.
Celestial Calculations, J. L. Lawrence.
Perl module Astro::Montenbruck.
AUTHOR
Tom Browder (tbrowder@cpan.org)
COPYRIGHT and LICENSE
Copyright © 2021 Tom Browder
This library is free software; you may redistribute or modify it under the Artistic License 2.0.