#!/usr/bin/perl -w # # To calculate the local siderial time for a given julian day # and longitude of the observatory site # # (c) Vlad Kondratiev, 2006 # if ($#ARGV == -1) { print "Usage: $0 jd lambda [deg]\n"; exit 0; } if ($#ARGV < 1) { print "Not all parameters\n"; exit 1; } $sid = &calc($ARGV[0], $ARGV[1]); $h = sprintf ("%02d", int ($sid)); $m = sprintf ("%02d", int (($sid - $h) * 60.)); $s = ($sid - $h - $m/60.) * 3600.; if ($s < 10.) { $s = "0" . $s; } print "Sidereal time: $h:$m:$s\n"; sub calc { my ($jd, $lambda) = @_; $part = $jd - int ($jd); if ($part >= 0.5) { $jd0 = int($jd) + 0.5; $H = ($part - 0.5) * 24.; } else { $jd0 = int($jd) - 0.5; $H = ($part + 0.5) * 24.; } $D = $jd - 2451545.0; $D0 = $jd0 - 2451545.0; $T = $D / 36525; $gmst = 6.697374558 + 0.06570982441908 * $D0 + 1.00273790935 * $H + 0.000026 * $T * $T + $lambda/15.; # $gmst = 18.697374558 + 24.06570982441908 * $D + $lambda/15.; return $gmst - (int($gmst/24.)) * 24.; }