Astro-Coord-ECI-VSOP87D
view release on metacpan or search on metacpan
lib/Astro/Coord/ECI/VSOP87D.pm view on Meta::CPAN
use 5.008;
use strict;
use warnings;
use utf8;
use Astro::Coord::ECI::Utils qw{
AU PI SECSPERDAY TWOPI
asin deg2rad jcent2000 julianday
load_module looks_like_number mod2pi
rad2deg rad2dms rad2hms tan
};
use Exporter qw{ import };
use Carp;
use POSIX qw{ floor };
use Storable qw{ dclone };
use constant DAYS_PER_JULIAN_MILENNIUM => 365250;
use constant CODE_REF => ref sub {};
use constant HASH_REF => ref {};
lib/Astro/Coord/ECI/VSOP87D.pm view on Meta::CPAN
}
sub model_cutoff_definition {
my ( $self, $name, @arg ) = @_;
defined $name
or $name = $self->get( 'model_cutoff' );
my $attr = $self->__get_attr();
if ( @arg ) {
if ( defined( my $val = $arg[0] ) ) {
unless ( ref $val ) {
looks_like_number( $val )
and $val !~ m/ \A Inf (?: inity )? | NaN \z /smx
or croak 'Scalar model cutoff definition must be a number';
my $num = $val;
$val = sub {
my ( @model ) = @_;
my %cutoff;
foreach my $series ( @model ) {
my $count = 0;
foreach my $term ( @{ $series->{terms} } ) {
last if $term->[0] < $num;
lib/Astro/Coord/ECI/VSOP87D.pm view on Meta::CPAN
push @v_vec, $vel;
}
$p_vec[0] = mod2pi( $p_vec[0] );
return ( @p_vec, @v_vec );
}
sub __mutate_nutation_cutoff {
my ( $self, undef, $val ) = @_;
defined $val
or croak 'Nutation cutoff must be defined';
looks_like_number( $val )
and $val >= 0
or croak 'Nutation cutoff must be a non-negative number';
$self->__get_attr()->{nutation_cutoff} = $val;
return $self;
}
sub obliquity {
my ( $self, $time ) = @_;
defined $time
( run in 0.435 second using v1.01-cache-2.11-cpan-64827b87656 )