Astro-Montenbruck
view release on metacpan or search on metacpan
lib/Astro/Montenbruck/Ephemeris/Planet/Sun.pm view on Meta::CPAN
package Astro::Montenbruck::Ephemeris::Planet::Sun;
use strict;
use warnings;
use base qw/Astro::Montenbruck::Ephemeris::Planet/;
use Math::Trig qw/:pi rad2deg deg2rad/;
use Astro::Montenbruck::MathUtils qw /frac ARCS reduce_rad cart polar/;
use Astro::Montenbruck::Ephemeris::Pert qw/pert/;
use Astro::Montenbruck::Ephemeris::Planet qw/$SU/;
our $VERSION = 0.01;
sub new {
my $class = shift;
$class->SUPER::new( id => $SU );
}
sub sunpos {
my ( $self, $t ) = @_;
# mean anomalies of planets and mean arguments of lunar orbit [rad]
my $m2 = pi2 * frac( 0.1387306 + 162.5485917 * $t );
my $m3 = pi2 * frac( 0.9931266 + 99.9973604 * $t );
my $m4 = pi2 * frac( 0.0543250 + 53.1666028 * $t );
my $m5 = pi2 * frac( 0.0551750 + 8.4293972 * $t );
my $m6 = pi2 * frac( 0.8816500 + 3.3938722 * $t );
my $d = pi2 * frac( 0.8274 + 1236.8531 * $t );
my $a = pi2 * frac( 0.3749 + 1325.5524 * $t );
my $u = pi2 * frac( 0.2591 + 1342.2278 * $t );
my ( $dl, $dr, $db ) = ( 0, 0, 0 ); # Corrections in longitude ["],
my $pert_cb = sub { $dl += $_[0]; $dr += $_[1]; $db += $_[2] };
# Keplerian terms and perturbations by Venus
my $term = pert(
T => $t,
M => $m3,
m => $m2,
I_min => 0,
I_max => 7,
i_min => -6,
i_max => 0,
callback => $pert_cb
);
$term->( 1, 0, 0, -0.22, 6892.76, -16707.37, -0.54, 0, 0 );
$term->( 1, 0, 1, -0.06, -17.35, 42.04, -0.15, 0.00, 0.00 );
$term->( 1, 0, 2, -0.01, -0.05, 0.13, -0.02, 0.00, 0.00 );
$term->( 2, 0, 0, 0.00, 71.98, -139.57, 0.00, 0.00, 0.00 );
$term->( 2, 0, 1, 0.00, -0.36, 0.70, 0.00, 0.00, 0.00 );
$term->( 3, 0, 0, 0.00, 1.04, -1.75, 0.00, 0.00, 0.00 );
$term->( 0, -1, 0, 0.03, -0.07, -0.16, -0.07, 0.02, -0.02 );
$term->( 1, -1, 0, 2.35, -4.23, -4.75, -2.64, 0.00, 0.00 );
$term->( 1, -2, 0, -0.10, 0.06, 0.12, 0.20, 0.02, 0.00 );
$term->( 2, -1, 0, -0.06, -0.03, 0.20, -0.01, 0.01, -0.09 );
$term->( 2, -2, 0, -4.70, 2.90, 8.28, 13.42, 0.01, -0.01 );
$term->( 3, -2, 0, 1.80, -1.74, -1.44, -1.57, 0.04, -0.06 );
$term->( 3, -3, 0, -0.67, 0.03, 0.11, 2.43, 0.01, 0.00 );
$term->( 4, -2, 0, 0.03, -0.03, 0.10, 0.09, 0.01, -0.01 );
$term->( 4, -3, 0, 1.51, -0.40, -0.88, -3.36, 0.18, -0.10 );
$term->( 4, -4, 0, -0.19, -0.09, -0.38, 0.77, 0.00, 0.00 );
$term->( 5, -3, 0, 0.76, -0.68, 0.30, 0.37, 0.01, 0.00 );
$term->( 5, -4, 0, -0.14, -0.04, -0.11, 0.43, -0.03, 0.00 );
$term->( 5, -5, 0, -0.05, -0.07, -0.31, 0.21, 0.00, 0.00 );
$term->( 6, -4, 0, 0.15, -0.04, -0.06, -0.21, 0.01, 0.00 );
$term->( 6, -5, 0, -0.03, -0.03, -0.09, 0.09, -0.01, 0.00 );
$term->( 6, -6, 0, 0.00, -0.04, -0.18, 0.02, 0.00, 0.00 );
$term->( 7, -5, 0, -0.12, -0.03, -0.08, 0.31, -0.02, -0.01 );
# perturbations by Mars
$term = pert(
T => $t,
M => $m3,
m => $m4,
( run in 1.635 second using v1.01-cache-2.11-cpan-d80b1682f3f )