+
+# just the distance - parameters as above
+sub distance
+{
+ my $hn = dr(shift);
+ my $he = dr(shift);
+ my $n = dr(shift);
+ my $e = dr(shift);
+ return (0, 0) if $hn == $n && $he == $e;
+ my $co = cos($he-$e)*cos($hn)*cos($n)+sin($hn)*sin($n);
+ my $ca = $co ? atan(abs(sqrt(1-$co*$co)/$co)) : $pi;
+ $ca = $pi-$ca if $co < 0;
+ my $dx = 6367*$ca;
+}
+
+# turn a lat long string into floating point lat and long
+sub stoll
+{
+ my ($latd, $latm, $latl, $longd, $longm, $longl) = $_[0] =~ /(\d{1,2})\s+(\d{1,2})\s*([NnSs])\s+(1?\d{1,2})\s+(\d{1,2})\s*([EeWw])/;
+
+ $longd += ($longm/60);
+ $longd = 0-$longd if (uc $longl) eq 'W';
+ $latd += ($latm/60);
+ $latd = 0-$latd if (uc $latl) eq 'S';
+ return ($latd, $longd);
+}
+
+# turn a lat and long into a string
+sub lltos
+{
+ my ($lat, $long) = @_;
+ my $slat = slat($lat);
+ my $slong = slong($long);
+ return "$slat $slong";
+}