#!/usr/bin/perl

# you have a gpx file...

my @points = `gpsbabel -t -i gpx -f $ARGV[0] -o csv -F -`   ;

my ($old_lat, $old_long) ;
foreach my $p (@points) {
    my ($lat, $long) = split(/,/, $p);

    $dist = dist($old_lat, $old_long, $lat, $long) * 5280;
    $dist = sprintf("%7.0f", $dist);
    print "from ($old_lat, $old_long) to ($lat, $long) is $dist feet\n"
        if ($old_lat && $old_long);

    
    $old_lat = $lat,
    $old_long = $long,
}



sub acos { atan2( sqrt(1-$_[0] * $_[0]), $_[0]) }


sub dist {

    $pi = atan2(1,1) * 4;


    my @parms = @_;
    my $lat1 = $parms[0]/180 * $pi ;
    my $long1 = $parms[1]/180 * $pi;
    my $lat2 = $parms[2]/180 * $pi;
    my $long2 = $parms[3]/180 * $pi;




#    print "$lat1, $long1, $lat2, $long2  \n";

    $a = $long1 - $long2;
    if ($a < 0) {$a = -$a;}
    if ($a > $pi) {$a = 2 * $pi;}

    $d = acos(sin($lat2) * sin($lat1) + cos($lat2)*cos($lat1)*cos($a)) * 3958;
    return $d ;
}

1; 

