Astro-Montenbruck

 view release on metacpan or  search on metacpan

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

    $term->( 1,  0,  0, -5.32, 38481.97, -141856.04, 0.40,  -6321.67, 1876.89 );
    $term->( 1,  0,  1, -1.12, 37.98,    -138.67,    -2.93, 37.28,    117.48 );
    $term->( 1,  0,  2, -0.32, -0.03,    0.12,       -1.19, 1.04,     -0.40 );
    $term->( 2,  0,  0, 28.28, 2285.80,  -6608.37,   0.00,  -589.35,  174.81 );
    $term->( 2,  0,  1, 1.64,  3.37,     -12.93,     0.00,  2.89,     11.10 );
    $term->( 2,  0,  2, 0.00,  0.00,     0.00,       0.00,  0.10,     -0.03 );
    $term->( 3,  0,  0, 5.31,  189.29,   -461.81,    0.00,  -61.98,   18.53 );
    $term->( 3,  0,  1, 0.31,  0.35,     -1.36,      0.00,  0.25,     1.19 );
    $term->( 4,  0,  0, 0.81,  17.96,    -38.26,     0.00,  -6.88,    2.08 );
    $term->( 4,  0,  1, 0.05,  0.04,     -0.15,      0.00,  0.02,     0.14 );
    $term->( 5,  0,  0, 0.11,  1.83,     -3.48,      0.00,  -0.79,    0.24 );
    $term->( 6,  0,  0, 0.02,  0.20,     -0.34,      0.00,  -0.09,    0.03 );
    $term->( -1, -1, 0, 0.09,  0.06,     0.14,       -0.22, 0.02,     -0.02 );
    $term->( 0,  -1, 0, 0.72,  0.49,     1.55,       -2.31, 0.12,     -0.10 );
    $term->( 1,  -1, 0, 7.00,  4.92,  13.93, -20.48, 0.08,  -0.13 );
    $term->( 2,  -1, 0, 13.08, 4.89,  -4.53, 10.01,  -0.05, 0.13 );
    $term->( 2,  -2, 0, 0.14,  0.05,  -0.48, -2.66,  0.01,  0.14 );
    $term->( 3,  -1, 0, 1.38,  0.56,  -2.00, 4.85,   -0.01, 0.19 );
    $term->( 3,  -2, 0, -6.85, 2.68,  8.38,  21.42,  0.00,  0.03 );
    $term->( 3,  -3, 0, -0.08, 0.20,  1.20,  0.46,   0.00,  0.00 );
    $term->( 4,  -1, 0, 0.16,  0.07,  -0.19, 0.47,   -0.01, 0.05 );

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

        I_max    => 5,
        i_min    => -5,
        i_max    => -1,
        callback => $pert_cb
    );

    $term->( -2, -1, 0, 0.05,   0.03,   0.08,   -0.14,  0.01,  -0.01 );
    $term->( -1, -1, 0, 0.39,   0.27,   0.92,   -1.50,  -0.03, -0.06 );
    $term->( -1, -2, 0, -0.16,  0.03,   0.13,   0.67,   -0.01, 0.06 );
    $term->( -1, -3, 0, -0.02,  0.01,   0.05,   0.09,   0.00,  0.01 );
    $term->( 0,  -1, 0, 3.56,   1.13,   -5.41,  -7.18,  -0.25, -0.24 );
    $term->( 0,  -2, 0, -1.44,  0.25,   1.24,   7.96,   0.02,  0.31 );
    $term->( 0,  -3, 0, -0.21,  0.11,   0.55,   1.04,   0.01,  0.05 );
    $term->( 0,  -4, 0, -0.02,  0.02,   0.11,   0.11,   0.00,  0.01 );
    $term->( 1,  -1, 0, 16.67,  -19.15, 61.00,  53.36,  -0.06, -0.07 );
    $term->( 1,  -2, 0, -21.64, 3.18,   -7.77,  -54.64, -0.31, 0.50 );
    $term->( 1,  -3, 0, -2.82,  1.45,   -2.53,  -5.73,  0.01,  0.07 );
    $term->( 1,  -4, 0, -0.31,  0.28,   -0.34,  -0.51,  0.00,  0.00 );
    $term->( 2,  -1, 0, 2.15,   -2.29,  7.04,   6.94,   0.33,  0.19 );
    $term->( 2,  -2, 0, -15.69, 3.31,   -15.70, -73.17, -0.17, -0.25 );
    $term->( 2,  -3, 0, -1.73,  1.95,   -9.19,  -7.20,  0.02,  -0.03 );

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

    $term->( 4, 0, 0, -77.64,  332.63,   -219.23,   0.00, 124.40,   237.03 );
    $term->( 4, 0, 1, -0.70,   1.10,     -0.08,     0.00, 1.59,     -0.59 );
    $term->( 5, 0, 0, -23.59,  67.28,    -43.54,    0.00, 29.44,    58.77 );
    $term->( 5, 0, 1, -0.23,   0.32,     -0.02,     0.00, 0.39,     -0.11 );
    $term->( 6, 0, 0, -6.86,   14.06,    -9.18,     0.00, 7.03,     14.84 );
    $term->( 6, 0, 1, -0.07,   0.09,     -0.01,     0.00, 0.10,     -0.02 );
    $term->( 7, 0, 0, -1.94,   2.98,     -2.02,     0.00, 1.69,     3.80 );
    $term->( 8, 0, 0, -0.54,   0.63,     -0.46,     0.00, 0.41,     0.98 );
    $term->( 9, 0, 0, -0.15,   0.13,     -0.11,     0.00, 0.10,     0.25 );
    $term->( -1, -2, 0, -0.17, -0.06, -0.05, 0.14,  -0.06, -0.07 );
    $term->( 0,  -1, 0, 0.24,  -0.16, -0.11, -0.16, 0.04,  -0.01 );
    $term->( 0,  -2, 0, -0.68, -0.25, -0.26, 0.73,  -0.16, -0.18 );
    $term->( 0,  -5, 0, 0.37,  0.08,  0.06,  -0.28, 0.13,  0.12 );
    $term->( 1,  -1, 0, 0.58,  -0.41, 0.26,  0.36,  0.01,  -0.01 );
    $term->( 1,  -2, 0, -3.51, -1.23, 0.23,  -0.63, -0.05, -0.06 );
    $term->( 1,  -3, 0, 0.08,  0.53,  -0.11, 0.04,  0.02,  -0.09 );
    $term->( 1,  -5, 0, 1.44,  0.31,  0.30,  -1.39, 0.34,  0.29 );
    $term->( 2,  -1, 0, 0.15,  -0.11, 0.09,  0.12,  0.02,  -0.04 );
    $term->( 2,  -2, 0, -1.99, -0.68, 0.65,  -1.91, -0.20, 0.03 );
    $term->( 2,  -3, 0, -0.34, -1.28, 0.97,  -0.26, 0.03,  0.03 );
    $term->( 2,  -4, 0, -0.33, 0.35,  -0.13, -0.13, -0.01, 0.00 );
    $term->( 2,  -5, 0, 7.19,  1.56,  -0.05, 0.12,  0.06,  0.05 );
    $term->( 3,  -2, 0, -0.52, -0.18, 0.13,  -0.39, -0.16, 0.03 );
    $term->( 3,  -3, 0, -0.11, -0.42, 0.36,  -0.10, -0.05, -0.05 );
    $term->( 3,  -4, 0, -0.19, 0.22,  -0.23, -0.20, -0.01, 0.02 );
    $term->( 3,  -5, 0, 2.77,  0.49,  -0.45, 2.56,  0.40,  -0.12 );
    $term->( 4,  -5, 0, 0.67,  0.12,  -0.09, 0.47,  0.24,  -0.08 );
    $term->( 5,  -5, 0, 0.18,  0.03,  -0.02, 0.12,  0.09,  -0.03 );

    # Perturbations by the Earth
    $term = pert(
        T        => $t,
        M        => $m1,
        m        => $m3,
        I_min    => 0,
        I_max    => 2,
        i_min    => -4,

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

    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;
}

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

          $dls / ARCS;
        $f = pi2 * frac( 0.25909118 + 1342.22782980 * $t - 0.00000892 * $t2 ) +
          $df / ARCS;
        $d = pi2 * frac( 0.82736186 + 1236.85308708 * $t - 0.00000397 * $t2 ) +
          $dd / ARCS;

        for my $i ( 1 .. 4 ) {

            my ( $arg, $max, $fac ) = (
                sub { $l,  4, 1.000002208 },
                sub { $ls, 3, 0.997504612 - 0.002495388 * $t },
                sub { $f,  4, 1.000002708 + 139.978 * $dgam },
                sub { $d,  6, 1.0 }
            )[ $i - 1 ]->();

            $co{0}->{$i} = 1.0;
            $co{1}->{$i} = cos($arg) * $fac;
            $si{0}->{$i} = 0.0;
            $si{1}->{$i} = sin($arg) * $fac;

            for ( 2 .. $max ) {

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

        $addsol->( 147.687,  138.76, +0.679, +1.1528, 1, -1, 0,  0 );
        $addsol->( -1.089,   0.55,   +0.021, 0.0,     1, -1, 0,  -1 );
        $addsol->( 28.475,   23.59,  -0.443, -0.2257, 1, -1, 0,  -2 );
        $addsol->( -0.276,   -0.38,  -0.006, -0.0036, 1, -1, 0,  -3 );
        $addsol->( 0.636,    2.27,   +0.146, -0.0102, 1, -1, 0,  -4 );
        $addsol->( -0.189,   -1.68,  +0.131, -0.0028, 0, 2,  0,  2 );
        $addsol->( -7.486,   -0.66,  -0.037, -0.0086, 0, 2,  0,  0 );
        $addsol->( -8.096,   -16.35, -0.740, 0.0918,  0, 2,  0,  -2 );
        $addsol->( -5.741,   -0.04,  0.0,    -0.0009, 0, 0,  2,  2 );
        $addsol->( 0.255,    0.0,    0.0,    0.0,     0, 0,  2,  1 );
        $addsol->( -411.608, -0.20,  0.0,    -0.0124, 0, 0,  2,  0 );
        $addsol->( 0.584,    0.84,   0.0,    +0.0071, 0, 0,  2,  -1 );
        $addsol->( -55.173,  -52.14, 0.0,    -0.1052, 0, 0,  2,  -2 );
        $addsol->( 0.254,    0.25,   0.0,    -0.0017, 0, 0,  2,  -3 );
        $addsol->( +0.025,   -1.67,  0.0,    +0.0031, 0, 0,  2,  -4 );
        $addsol->( 1.060,    2.96,   -0.166, 0.0243,  3, 0,  0,  +2 );
        $addsol->( 36.124,   50.64,  -1.300, 0.6215,  3, 0,  0,  0 );
        $addsol->( -13.193,  -16.40, +0.258, -0.1187, 3, 0,  0,  -2 );
        $addsol->( -1.187,   -0.74,  +0.042, 0.0074,  3, 0,  0,  -4 );
        $addsol->( -0.293,   -0.31,  -0.002, 0.0046,  3, 0,  0,  -6 );
        $addsol->( -0.290,   -1.45,  +0.116, -0.0051, 2, 1,  0,  2 );
        $addsol->( -7.649,   -10.56, +0.259, -0.1038, 2, 1,  0,  0 );
        $addsol->( -8.627,   -7.59,  +0.078, -0.0192, 2, 1,  0,  -2 );
        $addsol->( -2.740,   -2.54,  +0.022, 0.0324,  2, 1,  0,  -4 );
        $addsol->( 1.181,    3.32,   -0.212, 0.0213,  2, -1, 0,  +2 );
        $addsol->( 9.703,    11.67,  -0.151, 0.1268,  2, -1, 0,  0 );
        $addsol->( -0.352,   -0.37,  +0.001, -0.0028, 2, -1, 0,  -1 );
        $addsol->( -2.494,   -1.17,  -0.003, -0.0017, 2, -1, 0,  -2 );
        $addsol->( 0.360,    0.20,   -0.012, -0.0043, 2, -1, 0,  -4 );
        $addsol->( -1.167,   -1.25,  +0.008, -0.0106, 1, 2,  0,  0 );
        $addsol->( -7.412,   -6.12,  +0.117, 0.0484,  1, 2,  0,  -2 );
        $addsol->( -0.311,   -0.65,  -0.032, 0.0044,  1, 2,  0,  -4 );
        $addsol->( +0.757,   1.82,   -0.105, 0.0112,  1, -2, 0,  2 );
        $addsol->( +2.580,   2.32,   +0.027, 0.0196,  1, -2, 0,  0 );

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

    my $planetary = sub {
        $dlam +=
          +0.82 * sine( 0.7736 - 62.5512 * $t ) +
          0.31 * sine( 0.0466 - 125.1025 * $t ) +
          0.35 * sine( 0.5785 - 25.1042 * $t ) +
          0.66 * sine( 0.4591 + 1335.8075 * $t ) +
          0.64 * sine( 0.3130 - 91.5680 * $t ) +
          1.14 * sine( 0.1480 + 1331.2898 * $t ) +
          0.21 * sine( 0.5918 + 1056.5859 * $t ) +
          0.44 * sine( 0.5784 + 1322.8595 * $t ) +
          0.24 * sine( 0.2275 - 5.7374 * $t ) +
          0.28 * sine( 0.2965 + 2.6929 * $t ) +
          0.33 * sine( 0.3132 + 6.3368 * $t );
    };

    #
    # start
    #
    $init->();
    $solar_1->();
    $solar_2->();

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

        T        => $t,
        M        => $m9,
        m        => $m5,
        I_min    => 0,
        I_max    => 6,
        i_min    => -2,
        i_max    => 1,
        callback => $pert_cb
    );

    $term->( 1, 0, 0, 0.06, 100924.08, -960396.0, 15965.1, 51987.68, -24288.76 );
    $term->( 2, 0, 0, 3274.74, 17835.12, -118252.2, 3632.4, 12687.49, -6049.72 );
    $term->( 3, 0,  0, 1543.52, 4631.99, -21446.6, 1167.0, 3504.00, -1853.10 );
    $term->( 4, 0,  0, 688.99,  1227.08, -4823.4,  213.5,  1048.19, -648.26 );
    $term->( 5, 0,  0, 242.27,  415.93,  -1075.4,  140.6,  302.33,  -209.76 );
    $term->( 6, 0,  0, 138.41,  110.91,  -308.8,   -55.3,  109.52,  -93.82 );
    $term->( 3, -1, 0, -0.99,   5.06,    -25.6,    19.8,   1.26,    -1.96 );
    $term->( 2, -1, 0, 7.15,    5.61,    -96.7,    57.2,   1.64,    -2.16 );
    $term->( 1, -1, 0, 10.79,   23.13,   -390.4,   236.4,  -0.33,   0.86 );
    $term->( 0, 1,  0, -0.23,   4.43,    102.8,    63.2,   3.15,    0.34 );
    $term->( 1, 1,  0, -1.10,   -0.92,   11.8,     -2.3,   0.43,    0.14 );

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

        i_min    => -2,
        i_max    => 1,
        callback => $pert_cb
    );

    $term->( 1, -1, 0, -29.47, 75.97,  -106.4, -204.9, -40.71, -17.55 );
    $term->( 0, 1,  0, -13.88, 18.20,  42.6,   -46.1,  1.13,   0.43 );
    $term->( 1, 1,  0, 5.81,   -23.48, 15.0,   -6.8,   -7.48,  3.07 );
    $term->( 2, 1,  0, -10.27, 14.16,  -7.9,   0.4,    2.43,   -0.09 );
    $term->( 3, 1,  0, 6.86,   -10.66, 7.3,    -0.3,   -2.25,  0.69 );
    $term->( 2, -2, 0, 4.32,   2.00,   0.0,    -2.2,   -0.24,  0.12 );
    $term->( 1, -2, 0, -5.04,  -0.83,  -9.2,   -3.1,   0.79,   -0.24 );
    $term->( 0, -2, 0, 4.25,   2.48,   -5.9,   -3.3,   0.58,   0.02 );

    # Perturbations by Pluto and Saturn
    my $phi = ( $m5 - $m6 );
    my $c   = cos($phi);
    my $s   = sin($phi);
    $dl += -9.11 * $c + 0.12 * $s;
    $dr += -3.4 * $c - 3.3 * $s;
    $db += +0.81 * $c + 0.78 * $s;

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

}

# Intermediate variables for calculating geocentric positions.
sub _lbr_geo {
    my ( $self, $t ) = @_;

    my $m  = pi2 * frac( 0.8829867 + 3.3947688 * $t );
    my $cm = cos($m);
    my $dl = 5.84 + 0.65 * $cm;
    my $dr = 3.09 * sin($m);
    my $db = 0.24 * $cm;

    $dl, $db, $dr;
}

1;

__END__

=pod

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


    $term->( 1, 0,  0, 2.37,    2793.23, -4899.07, 0.11,   9995.27, 7027.22 );
    $term->( 1, 0,  1, 0.10,    -19.65,  34.40,    0.22,   64.95,   -86.10 );
    $term->( 1, 0,  2, 0.06,    0.04,    -0.07,    0.11,   -0.55,   -0.07 );
    $term->( 2, 0,  0, -170.42, 73.13,   -16.59,   0.00,   67.71,   47.56 );
    $term->( 2, 0,  1, 0.93,    2.91,    0.23,     0.00,   -0.03,   -0.92 );
    $term->( 3, 0,  0, -2.31,   0.90,    -0.08,    0.00,   0.04,    2.09 );
    $term->( 1, -1, 0, -2.38,   -4.27,   3.27,     -1.82,  0.00,    0.00 );
    $term->( 1, -2, 0, 0.09,    0.00,    -0.08,    0.05,   -0.02,   -0.25 );
    $term->( 2, -2, 0, -9.57,   -5.93,   8.57,     -13.83, -0.01,   -0.01 );
    $term->( 2, -3, 0, -2.47,   -2.40,   0.83,     -0.95,  0.16,    0.24 );
    $term->( 3, -2, 0, -0.09,   -0.05,   0.08,     -0.13,  -0.28,   0.12 );
    $term->( 3, -3, 0, 7.12,    0.32,    -0.62,    13.76,  -0.07,   0.01 );
    $term->( 3, -4, 0, -0.65,   -0.17,   0.18,     -0.73,  0.10,    0.05 );
    $term->( 3, -5, 0, -1.08,   -0.95,   -0.17,    0.22,   -0.03,   -0.03 );
    $term->( 4, -3, 0, 0.06,    0.00,    -0.01,    0.08,   0.14,    -0.18 );
    $term->( 4, -4, 0, 0.93,    -0.46,   1.06,     2.13,   -0.01,   0.01 );
    $term->( 4, -5, 0, -1.53,   0.38,    -0.64,    -2.54,  0.27,    0.00 );
    $term->( 4, -6, 0, -0.17,   -0.05,   0.03,     -0.11,  0.02,    0.00 );
    $term->( 5, -5, 0, 0.18,    -0.28,   0.71,     0.47,   -0.02,   0.04 );
    $term->( 5, -6, 0, 0.15,    -0.14,   0.30,     0.31,   -0.04,   0.03 );

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

        M        => $m2,
        m        => $m6,
        I_min    => 0,
        I_max    => 1,
        i_min    => -1,
        i_max    => -1,
        callback => $pert_cb
    );

    $term->( 0, -1, 0, 0.00,  0.21,  0.00, 0.00,  0.00, -0.01 );
    $term->( 1, -1, 0, -0.11, -0.14, 0.24, -0.20, 0.01, 0.00 );

    # Ecliptic coordinates ([rad],[AU])
    $dl +=
      +2.74 * sin( pi2 * ( 0.0764 + 0.4174 * $t ) ) +
      0.27 * sin( pi2 *  ( 0.9201 + 0.3307 * $t ) );
    $dl += +1.9 + 1.8 * $t;

    my $l =
      pi2 *
      frac( 0.3654783 + $m2 / pi2 +

t/11-time.t  view on Meta::CPAN

    }
    {
        my ($y, $m, $d) = jd2cal($jj, gregorian => 0);
        cmp_ok($d, '==', 10, "Output old-style date")
            or diag("Old-style day should be 10, got $d instead");
    }
};

subtest "JD at midnight" => sub {
    plan tests => 4;
    cmp_ok( 2438791.5, '==', jd0(2438792.0), "At previous noon");
    cmp_ok( 2438792.5, '==', jd0(2438792.9), "Close to current noon");
    cmp_ok( 2438792.5, '==', jd0(2438793.0), "At noon");
    cmp_ok( 2438793.5, '==', jd0(2438793.5), "At midnight");
};

subtest "T" => sub {
	plan tests => 2;
    {
        my $exp = -0.070321697467488022970095;
        my $jd = 2448976.5;
        my $got = jd_cent($jd);
        delta_ok($exp, $got, "JD $jd -> T, epoch 2000")
            or diag("Expected: T $exp. got: $got");



( run in 0.855 second using v1.01-cache-2.11-cpan-7add2cbd662 )