Astro-Sunrise
view release on metacpan or search on metacpan
doc/astronomical-notes.pod view on Meta::CPAN
speed. In the end, it is better than the basic algorithm, which uses an approximate
but still wrong orbital speed, but for the whole span of 3 h, 59 mn and 57 s.
=head2 What Happened in Spring 2020?
Let us look a bit farther into the past. In January 2019, I published
version 0.98 of L<Astro::Sunrise>, with the precise algorithm
implemented as explained in the preceding paragraph. For test data, I
did not know how to cross-check with authoritative sources, so I just
checked they looked plausible and that the iterative computation
stopped after a few iterations. At this time, I did not synchronise
L<DateTime::Event::Sunrise> with L<Astro::Sunrise>, because it was not
the proper time yet.
Then in April 2020, a user created an RT ticket, explaining that he
had compared the results of L<DateTime::Event::Sunrise> with
authoritative websites and that the results were not precise enough.
Of course the results were not precise, I had not yet synchronised
L<DateTime::Event::Sunrise> with L<Astro::Sunrise>. Yet this ticket
gave me two things: first, a website which would provide precise
day-after-day computations of sunrise, sunset and real solar noon, and
lib/Astro/Sunrise.pm view on Meta::CPAN
what I have tried to accomplish with this.
a) Compute sunrise or sunset as always, with one exception: to convert LHA from degrees to hours,
divide by 15.04107 instead of 15.0 (this accounts for the difference between the solar day
and the sidereal day).
b) Re-do the computation but compute the Sun's RA and Decl, and also GMST0, for the moment
of sunrise or sunset last computed.
c) Iterate b) until the computed sunrise or sunset no longer changes significantly.
Usually 2 iterations are enough, in rare cases 3 or 4 iterations may be needed.
This parameter is optional. It can be positional (#9).
=back
=head3 I<For Example>
($sunrise, $sunset) = sunrise( 2001, 3, 10, 17.384, 98.625, -5, 0 );
($sunrise, $sunset) = sunrise( 2002, 10, 14, -105.181, 41.324, -7, 1, -18);
($sunrise, $sunset) = sunrise( 2002, 10, 14, -105.181, 41.324, -7, 1, -18, 1);
( run in 1.053 second using v1.01-cache-2.11-cpan-71847e10f99 )