X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fqra.pl;h=fe3f08abc59d555918a2dcf826816bb17aa9ac95;hb=337f38bfac57a5e5df34c63094fb869b0e2f6bee;hp=8e91cf5fcda534a3c6855aac2eb326ea442f05f3;hpb=f91e843bd91e37a969d0be7e1168649b076e5170;p=spider.git diff --git a/cmd/show/qra.pl b/cmd/show/qra.pl index 8e91cf5f..fe3f08ab 100644 --- a/cmd/show/qra.pl +++ b/cmd/show/qra.pl @@ -1,5 +1,7 @@ # -# show the distance and bearing each QRA locator +# show the distance and bearing to a QRA locator +# +# you can enter two qra locators and it will calc the distance between them # # $Id$ # @@ -13,21 +15,37 @@ my $lat = $self->user->lat; my $long = $self->user->long; if (!$long && !$lat) { push @out, $self->msg('heade1'); - $lat = $main::mylat; - $long = $main::mylong; + $lat = $main::mylatitude; + $long = $main::mylongitude; } -foreach $l (@list) { - # locators ---> - if (DXBearing::is_qra($l) || $l =~ /^[A-Za-z][A-Za-z]\d\d$/) { - my $qra = uc $l; - $qra .= 'MM' if $l =~ /^[A-Za-z][A-Za-z]\d\d$/; - - my ($qlat, $qlong) = DXBearing::qratoll($qra); - my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong); - my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long); - push @out, sprintf "%-9s Bearing: %.0f Recip: %.0f %.0fKm %.0fMi", $qra, $b, $r, $dx, $dx * 0.62133785; - } +return (1, $self->msg('qrashe1')) unless @list > 0; +return (1, $self->msg('qrae2')) unless (DXBearing::is_qra($list[0]) || $list[0] =~ /^[A-Za-z][A-Za-z]\d\d$/); + +#print "$lat $long\n"; + +my $l = uc $list[0]; +my $f; + +if (@list > 1) { + $f = $l; + $f .= 'MM' if $f =~ /^[A-Z][A-Z]\d\d$/; + ($lat, $long) = DXBearing::qratoll($f); + #print "$lat $long\n"; + + return (1, $self->msg('qrae2')) unless (DXBearing::is_qra($list[1]) || $list[1] =~ /^[A-Za-z][A-Za-z]\d\d$/); + $l = uc $list[1]; } +$l .= 'MM' if $l =~ /^[A-Z][A-Z]\d\d$/; + +my ($qlat, $qlong) = DXBearing::qratoll($l); +#print "$qlat $qlong\n"; +my ($b, $dx) = DXBearing::bdist($lat, $long, $qlat, $qlong); +my ($r, $rdx) = DXBearing::bdist($qlat, $qlong, $lat, $long); +my $to = " -> $list[1]" if $f; +my $from = $list[0]; + +push @out, sprintf "$list[0]$to Bearing: %.0f Deg. Recip: %.0f Deg. %.0fMi. %.0fKm.", $b, $r, $dx * 0.62133785, $dx; + return (1, @out);