Astro-Montenbruck
view release on metacpan or search on metacpan
lib/Astro/Montenbruck/Ephemeris/Planet/Uranus.pm view on Meta::CPAN
package Astro::Montenbruck::Ephemeris::Planet::Uranus;
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/$UR/;
our $VERSION = 0.01;
sub new {
my $class = shift;
$class->SUPER::new( id => $UR );
}
sub heliocentric {
my ( $self, $t ) = @_;
# Mean anomalies of planets in [rad]
my $m5 = pi2 * frac( 0.0564472 + 8.4302889 * $t );
my $m6 = pi2 * frac( 0.8829611 + 3.3947583 * $t );
my $m7 = pi2 * frac( 0.3967117 + 1.1902849 * $t );
my $m8 = pi2 * frac( 0.7216833 + 0.6068528 * $t );
my ( $dl, $dr, $db ) = ( 0, 0, 0 ); # Corrections in longitude ["],
my $pert_cb = sub {
$dl += $_[0];
$dr += $_[1];
$db += $_[2];
};
# Perturbations by Uranus
my $term = pert(
T => $t,
M => $m7,
m => $m5,
I_min => -1,
I_max => 3,
i_min => -2,
i_max => -1,
callback => $pert_cb
);
$term->( -1, -1, 0, 0.0, 0.0, -0.1, 1.7, -0.1, 0.0 );
$term->( 0, -1, 0, 0.5, -1.2, 18.9, 9.1, -0.9, 0.1 );
$term->( 1, -1, 0, -21.2, 48.7, -455.5, -198.8, 0.0, 0.0 );
$term->( 1, -2, 0, -0.5, 1.2, -10.9, -4.8, 0.0, 0.0 );
$term->( 2, -1, 0, -1.3, 3.2, -23.2, -11.1, 0.3, 0.1 );
$term->( 2, -2, 0, -0.2, 0.2, 1.1, 1.5, 0.0, 0.0 );
$term->( 3, -1, 0, 0.0, 0.2, -1.8, 0.4, 0.0, 0.0 );
# Perturbations by Saturn
$term = pert(
T => $t,
M => $m7,
m => $m6,
I_min => 0,
I_max => 11,
i_min => -6,
i_max => 0,
callback => $pert_cb
);
$term->( 0, -1, 0, 1.4, -0.5, -6.4, 9.0, -0.4, -0.8 );
$term->( 1, -1, 0, -18.6, -12.6, 36.7, -336.8, 1.0, 0.3 );
$term->( 1, -2, 0, -0.7, -0.3, 0.5, -7.5, 0.1, 0.0 );
$term->( 2, -1, 0, 20.0, -141.6, -587.1, -107.0, 3.1, -0.8 );
$term->( 2, -1, 1, 1.0, 1.4, 5.8, -4.0, 0.0, 0.0 );
$term->( 2, -2, 0, 1.6, -3.8, -35.6, -16.0, 0.0, 0.0 );
$term->( 3, -1, 0, 75.3, -100.9, 128.9, 77.5, -0.8, 0.1 );
$term->( 3, -1, 1, 0.2, 1.8, -1.9, 0.3, 0.0, 0.0 );
$term->( 3, -2, 0, 2.3, -1.3, -9.5, -17.9, 0.0, 0.1 );
$term->( 3, -3, 0, -0.7, -0.5, -4.9, 6.8, 0.0, 0.0 );
$term->( 4, -1, 0, 3.4, -5.0, 21.6, 14.3, -0.8, -0.5 );
( run in 2.021 seconds using v1.01-cache-2.11-cpan-d80b1682f3f )