++ed by:
1 non-PAUSE user
Author image Sergey Krushinsky
and 1 contributors

NAME

Astro::Montenbruck::RiseSet::Plarise — rise and set.

SYNOPSIS

    use Astro::Montenbruck::RiseSet::Constants qw/:events :altitudes/;
    use Astro::Montenbruck::RiseSet::Plarise qw/:rst_func/;

    # build top-level function for any event and any celestial object 
    # for given time and place
    my $rst_func = rst_func(
        date     => [1989, 3, 23],
        phi      => 48.1, # geographic latitude 
        lambda   => -11.6 # geographic longitude
    );

    # build second level functon for calculating any event for given object
    my $evt_func = $rst_func->(
        get_position => sub {
            my $jd = shift;
            # return equatorial coordinates of the celestial body for the Julian Day.
        },
        sin_h0       => sin( deg2rad($H0_PLANET) ),
    );

    # finally, calculate time of rise event. Alternatively, use $EVT_SET or $EVT_TRANSIT
    my ($state, $jd) = $evt_func->($EVT_RISE);

VERSION

Version 0.01

DESCRIPTION

Low level routines for calculating rise and set times of celestial bodies. They are especially usefull for calculating different types of twilight.

FUNCTIONS

riseset ( %args )

time of rise and set events.

Named Arguments

  • get_position — function, which given Standard Julian Day, returns equatorial coordinates of the celestial body, in radians.

  • date — array of year (astronomical, zero-based), month [1..12] and day, [1..31].

  • phi — geographic latitude, degrees, positive northward

  • lambda —geographic longitude, degrees, positive westward

  • get_position — function, which given Standard Julian Day, returns equatorial coordinates of the celestial body, in radians.

  • sin_h0 — sine of the standard altitude, i.e. the geometric altitude of the center of the body at the time of apparent rising or setting.

  • on_event callback is called when the event time is determined. The arguments are:

    • event type, one of $EVT_RISE or $EVT_SET

    • Univerrsal time of the event

        on_event => sub { my ($evt, $ut) = @_; ... }
  • on_noevent is called when the event does not happen at the given date, either because the body never rises, or is circumpolar. The argument is respectively $STATE_NEVER_RISES or $STATE_CIRCUMPOLAR.

        on_noevent => sub { my $state = shift; ... }

AUTHOR

Sergey Krushinsky, <krushi at cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2021 by Sergey Krushinsky

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.