X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FSun.pm;h=13f7d20cdc1bc7cb60cca01cae1466bfd20bf144;hb=8f58735f5c9c090f2e5e00e05c7ad0834eccb741;hp=4bb349f6ee77d93e5168a69005b77667ece4ee4f;hpb=589de1133c9ef2ecc6567473c24cff1717fb604b;p=spider.git diff --git a/perl/Sun.pm b/perl/Sun.pm index 4bb349f6..13f7d20c 100644 --- a/perl/Sun.pm +++ b/perl/Sun.pm @@ -28,12 +28,36 @@ require Exporter; @EXPORT = qw($pi $d2r $r2d ); use strict; -use vars qw($pi $d2r $r2d ); + +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0; +$main::build += $VERSION; +$main::branch += $BRANCH; + +use vars qw($pi $d2r $r2d); $pi = 3.141592653589; $d2r = ($pi/180); $r2d = (180/$pi); +use vars qw(%keps); +use Keps; +use DXVars; +use DXUtil; + +# reload the keps data +sub load +{ + my @out; + my $s = readfilestr("$main::root/local/Keps.pm"); + if ($s) { + eval $s; + push @out, $@ if $@; + } + return @out; +} + sub Julian_Day { my $year = shift; @@ -563,50 +587,6 @@ sub get_satellite_pos # #Temporary keps database... # -my %keps = ( - noaa15 => { - number => 25338, - id => 98030, - epoch => 99341.00000000, - mm1 => .00000376, - mm2 => .00000e-0, - bstar => .18612e-3, - inclination => 98.6601, - raan => 8.2003, - eccentricity => .0011401, - argperigee => 112.4684, - meananomaly => 42.5140, - meanmotion => 14.23047277081382, - }, - tdrs5 => { - number => 21639, - id => 91054, - epoch => 99341.34471854, - mm1 => .00000095, - mm2 => .00000e-0, - bstar => .10000e-3, - inclination => 1.5957, - raan => 88.4884, - eccentricity => .003028, - argperigee => 161.6582, - meananomaly => 135.4323, - meanmotion => 1.00277774, - }, - oscar16 => { - number => 20439, - id => 90005, - epoch => 99341.14501399, - mm1 => .00000343, - mm2 => .00000e-0, - bstar => .14841e-3, - inclination => 98.4690, - raan => 55.0032, - eccentricity => .0012163, - argperigee => 66.4615, - meananomaly => 293.7842, - meanmotion => 14.303202855, - }, -); my $jtime = shift; my $lat = shift; my $lon = shift; @@ -635,9 +615,9 @@ my %keps = ( my $epoch_day=$epoch-int(1000*$epoch_year); #printf("epoch_year = %10.2f\n",$epoch_year); #printf("epoch_day = %17.12f\n",$epoch_day); - $epoch_year=$epoch_year+2000 if ($epoch_year < 57); - $epoch_year=$epoch_year+1900 if ($epoch_year >= 57); - my $jt_epoch=Julian_Date_of_Year($epoch_year); + my $ep_year=$epoch_year+2000 if ($epoch_year < 57); + $ep_year=$epoch_year+1900 if ($epoch_year >= 57); + my $jt_epoch=Julian_Date_of_Year($ep_year); $jt_epoch=$jt_epoch+$epoch_day; #printf("JT for epoch = %17.12f\n",$jt_epoch); my $tsince=($jtime-$jt_epoch)*24*60; @@ -700,16 +680,15 @@ my %keps = ( my $xl=mod2p($xls-$c5/$p*$axnsl); my $u=mod2p($xl-$xnodes); - my $item3=0; + my $item3; my $eo1=$u; my $tem5=1; my $coseo1=0; my $sineo1=0; - while ( abs($tem5) >= 1e-6 && $item3 < 10 ) + for ($item3=0; abs($tem5) >= 1e-6 && $item3 < 10; $item3++ ) { $sineo1=sin($eo1); $coseo1=cos($eo1); - $item3 = $item3+1; $tem5=1-$coseo1*$axnsl-$sineo1*$aynsl; $tem5=($u-$aynsl*$coseo1+$axnsl*$sineo1-$eo1)/$tem5; my $tem2=abs($tem5); @@ -901,6 +880,10 @@ sub Calendar_date_and_time_from_JD $yr = $c-4715 if( $mon == 1 || $mon == 2 ); $hr = int($frac*24); $min= int(($frac*24 - $hr)*60+0.5); + if ($min == 60) { # this may well prove inadequate DJK + $hr += 1; + $min = 0; + } return ($yr,$mon,$day,$hr,$min); }