Astro-Montenbruck
view release on metacpan or search on metacpan
lib/Astro/Montenbruck/Ephemeris/Planet/Moon.pm view on Meta::CPAN
package Astro::Montenbruck::Ephemeris::Planet::Moon;
use strict;
use warnings;
use Readonly;
use Math::Trig qw/:pi rad2deg deg2rad/;
use Astro::Montenbruck::Ephemeris::Planet;
use base qw/Astro::Montenbruck::Ephemeris::Planet/;
use Astro::Montenbruck::Ephemeris::Planet qw/$MO/;
use Astro::Montenbruck::MathUtils qw /frac sine ARCS reduce_deg cart polar/;
use Astro::Montenbruck::Ephemeris::Pert qw /addthe/;
our $VERSION = 0.02;
Readonly our $ARC => 206264.81; # 3600 * 180 / PI = arcsec per radian
Readonly our $RADII_TO_AU => 4.26354E-5;
sub new {
my $class = shift;
$class->SUPER::new( id => $MO );
}
# calculate long-periodic changes of the mean elements
# l,l',F,D and L0 as well as dgamma
sub _long_periodic {
my $t = shift;
my $s1 = sine( 0.19833 + 0.05611 * $t );
my $s2 = sine( 0.27869 + 0.04508 * $t );
my $s3 = sine( 0.16827 - 0.36903 * $t );
my $s4 = sine( 0.34734 - 5.37261 * $t );
my $s5 = sine( 0.10498 - 5.37899 * $t );
my $s6 = sine( 0.42681 - 0.41855 * $t );
my $s7 = sine( 0.14943 - 5.37511 * $t );
my $dl0 =
0.84 * $s1 +
0.31 * $s2 +
14.27 * $s3 +
7.26 * $s4 +
0.28 * $s5 +
0.24 * $s6;
my $dl =
2.94 * $s1 +
0.31 * $s2 +
14.27 * $s3 +
9.34 * $s4 +
1.12 * $s5 +
0.83 * $s6;
my $dls = -6.40 * $s1 - 1.89 * $s6;
my $df =
0.21 * $s1 +
0.31 * $s2 +
14.27 * $s3 -
88.70 * $s4 -
15.30 * $s5 +
0.24 * $s6 -
1.86 * $s7;
my $dd = $dl0 - $dls;
my $dgam =
-3332e-9 * sine( 0.59734 - 5.37261 * $t ) -
539e-9 * sine( 0.35498 - 5.37899 * $t ) -
64e-9 * sine( 0.39943 - 5.37511 * $t );
$dl0, $dl, $dls, $df, $dd, $dgam;
}
sub moonpos {
my ( $self, $t ) = @_;
my ( %co, %si );
my ( $dlam, $ds, $gam1c, $n );
my $sinpi = 3422.7;
my ( $dl0, $dl, $dls, $df, $dd, $dgam, $l, $l0, $ls, $f, $d );
# INIT: calculates the mean elements and their sine and cosine
# l mean anomaly of the Moon
# l' mean anomaly of the Sun
# F mean distance from the node
# D mean elongation from the Sun
my $init = sub {
my $t2 = $t * $t;
( run in 0.618 second using v1.01-cache-2.11-cpan-54e63673c56 )