File Coverage

lib/Astro/Montenbruck/Time/Sidereal.pm
Criterion Covered Total %
statement 28 28 100.0
branch n/a
condition n/a
subroutine 8 8 100.0
pod 1 1 100.0
total 37 37 100.0


line stmt bran cond sub pod time code
1             package Astro::Montenbruck::Time::Sidereal;
2 1     1   137000 use strict;
  1         4  
  1         24  
3 1     1   5 use warnings;
  1         1  
  1         21  
4              
5 1     1   514 use Readonly;
  1         3094  
  1         44  
6 1     1   6 use Exporter qw/import/;
  1         2  
  1         23  
7 1     1   336 use Astro::Montenbruck::MathUtils qw/reduce_deg/;
  1         2  
  1         55  
8 1     1   367 use Astro::Montenbruck::Time qw/jd_cent/;
  1         2  
  1         56  
9 1     1   357 use Astro::Montenbruck::NutEqu qw/deltas obliquity/;
  1         2  
  1         146  
10              
11             our @EXPORT = qw/ramc/;
12              
13             our $VERSION = 0.01;
14              
15              
16             Readonly::Scalar our $SOLAR_TO_SIDEREAL => 1.002737909350795;
17             # Difference in between Sidereal and Solar hour (the former is shorter)
18              
19             sub ramc {
20 1     1 1 108 my ( $jd, $lambda ) = @_;
21 1         5 my $t = jd_cent($jd);
22              
23 1         5 my ($dpsi) = deltas($t);
24              
25             # Correction for apparent S.T.
26 1         5 my $corr = $dpsi * cos( obliquity($t) ) / 3600;
27              
28             # Mean Local S.T.
29 1         7 my $result =
30             280.46061837 + 360.98564736629 * ( $jd - 2451545 ) +
31             0.000387933 * $t * $t -
32             $t**3 / 38710000 +
33             $corr;
34              
35 1         2 $result -= $lambda;
36 1         4 reduce_deg($result);
37             }
38              
39             1;
40             __END__
41              
42             =pod
43              
44             =encoding UTF-8
45              
46             =head1 NAME
47              
48             Astro::Montenbruck::Time::Sidereal - Sidereal time related calculations.
49              
50             =head1 VERSION
51              
52             Version 0.01
53              
54              
55             =head1 DESCRIPTION
56              
57             Sidereal time related calculations.
58              
59             =head1 EXPORT
60              
61             =over
62              
63             =item * L</ramc($jd, $lambda)>
64              
65             =back
66              
67             =head1 SUBROUTINES/METHODS
68              
69             =head2 ramc($jd, $lambda)
70              
71             Right Ascension of the Meridian
72              
73             =head3 Arguments
74              
75             =over
76              
77             =item * B<$jd> — Standard Julian Date.
78              
79             =item * B<$lambda> — geographic longitude in degrees, negative for East
80              
81             =back
82              
83             =head3 Returns
84              
85             Right Ascension of Meridian, arc-degrees
86              
87             =cut