Astro-Montenbruck

 view release on metacpan or  search on metacpan

lib/Astro/Montenbruck/Ephemeris/Planet/Jupiter.pm  view on Meta::CPAN

package Astro::Montenbruck::Ephemeris::Planet::Jupiter;

use strict;
use warnings;

use base qw/Astro::Montenbruck::Ephemeris::Planet/;
use Math::Trig qw/:pi/;
use Astro::Montenbruck::Ephemeris::Pert qw/pert/;
use Astro::Montenbruck::MathUtils qw /frac ARCS/;
use Astro::Montenbruck::Ephemeris::Planet qw/$JU/;

our $VERSION = 0.01;

sub new {
    my $class = shift;
    $class->SUPER::new( id => $JU);
}


sub heliocentric {
    my ($self, $t) = @_;

    # Mean anomalies of planets in [rad]
    my $m5 = pi2 * frac ( 0.0565314 + 8.4302963 * $t );
    my $m6 = pi2 * frac ( 0.8829867 + 3.3947688 * $t );
    my $m7 = pi2 * frac ( 0.3969537 + 1.1902586 * $t );

    my ($dl, $dr, $db) = (0, 0, 0); # Corrections in longitude ["],
    my $pert_cb = sub { $dl += $_[0]; $dr += $_[1]; $db += $_[2] };

    # Perturbations by Saturn
    my $term = pert(
        T     => $t,
        M     => $m5,
        m     => $m6,
        I_min =>-1,
        I_max => 5,
        i_min =>-10,
        i_max =>-0,
        callback => $pert_cb
    );

    $term->(-1, -1,0,  -0.2,    1.4,     2.0,   0.6,    0.1, -0.2);
    $term->( 0, -1,0,   9.4,    8.9,     3.9,  -8.3,   -0.4, -1.4);
    $term->( 0, -2,0,   5.6,   -3.0,    -5.4,  -5.7,   -2.0,  0.0);
    $term->( 0, -3,0,  -4.0,   -0.1,     0.0,   5.5,    0.0,  0.0);
    $term->( 0, -5,0,   3.3,   -1.6,    -1.6,  -3.1,   -0.5, -1.2);
    $term->( 1,  0,0,-113.1,19998.6,-25208.2,-142.2,-4670.7,288.9);
    $term->( 1,  0,1, -76.1,   66.9,   -84.2, -95.8,   21.6, 29.4);
    $term->( 1,  0,2,  -0.5,   -0.3,     0.4,  -0.7,    0.1, -0.1);
    $term->( 1, -1,0,  78.8,  -14.5,    11.5,  64.4,   -0.2,  0.2);
    $term->( 1, -2,0,  -2.0, -132.4,    28.8,   4.3,   -1.7,  0.4);
    $term->( 1, -2,1,  -1.1,   -0.7,     0.2,  -0.3,    0.0,  0.0);
    $term->( 1, -3,0,  -7.5,   -6.8,    -0.4,  -1.1,    0.6, -0.9);
    $term->( 1, -4,0,   0.7,    0.7,     0.6,  -1.1,    0.0, -0.2);
    $term->( 1, -5,0,  51.5,  -26.0,   -32.5, -64.4,   -4.9,-12.4);
    $term->( 1, -5,1,  -1.2,   -2.2,    -2.7,   1.5,   -0.4,  0.3);
    $term->( 2,  0,0,  -3.4,  632.0,  -610.6,  -6.5, -226.8, 12.7);
    $term->( 2,  0,1,  -4.2,    3.8,    -4.1,  -4.5,    0.2,  0.6);
    $term->( 2, -1,0,   5.3,   -0.7,     0.7,   6.1,    0.2,  1.1);
    $term->( 2, -2,0, -76.4, -185.1,   260.2,-108.0,    1.6,  0.0);
    $term->( 2, -3,0,  66.7,   47.8,   -51.4,  69.8,    0.9,  0.3);
    $term->( 2, -3,1,   0.6,   -1.0,     1.0,   0.6,    0.0,  0.0);
    $term->( 2, -4,0,  17.0,    1.4,    -1.8,   9.6,    0.0, -0.1);
    $term->( 2, -5,0,1066.2, -518.3,    -1.3, -23.9,    1.8, -0.3);
    $term->( 2, -5,1, -25.4,  -40.3,    -0.9,   0.3,    0.0,  0.0);
    $term->( 2, -5,2,  -0.7,    0.5,     0.0,   0.0,    0.0,  0.0);
    $term->( 3,  0,0,  -0.1,   28.0,   -22.1,  -0.2,  -12.5,  0.7);
    $term->( 3, -2,0,  -5.0,  -11.5,    11.7,  -5.4,    2.1, -1.0);
    $term->( 3, -3,0,  16.9,   -6.4,    13.4,  26.9,   -0.5,  0.8);
    $term->( 3, -4,0,   7.2,  -13.3,    20.9,  10.5,    0.1, -0.1);
    $term->( 3, -5,0,  68.5,  134.3,  -166.9,  86.5,    7.1, 15.2);
    $term->( 3, -5,1,   3.5,   -2.7,     3.4,   4.3,    0.5, -0.4);
    $term->( 3, -6,0,   0.6,    1.0,    -0.9,   0.5,    0.0,  0.0);
    $term->( 3, -7,0,  -1.1,    1.7,    -0.4,  -0.2,    0.0,  0.0);
    $term->( 4,  0,0,   0.0,    1.4,    -1.0,   0.0,   -0.6,  0.0);



( run in 1.376 second using v1.01-cache-2.11-cpan-d80b1682f3f )