#!/usr/bin/perl ################################## # Programed By ikechan # Since 2002/03/05 # http://admjp.com/j/ ################################## $f1 = $ARGV[0]; $g1 = $ARGV[1]; $f2 = $ARGV[2]; $g2 = $ARGV[3]; $f1 =~ /^(\d+)\.(\d\d)(\d\d)$/; $f1 = $1 + $2 / 60 + $3 / 3600 + 0.00005; $f1 =~ /^(\d+\.\d\d\d\d)/; $f1 = $1; $f2 =~ /^(\d+)\.(\d\d)(\d\d)$/; $f2 = $1 + $2 / 60 + $3 / 3600 + 0.00005; $f2 =~ /^(\d+\.\d\d\d\d)/; $f2 = $1; $g1 =~ /^(\d+)\.(\d\d)(\d\d)$/; $g1 = $1 + $2 / 60 + $3 / 3600 + 0.00005; $g1 =~ /^(\d+\.\d\d\d\d)/; $g1 = $1; $g2 =~ /^(\d+)\.(\d\d)(\d\d)$/; $g2 = $1 + $2 / 60 + $3 / 3600 + 0.00005; $g2 =~ /^(\d+\.\d\d\d\d)/; $g2 = $1; $PI = 3.141592653589793238462; $a=6378136.0; $e2=0.006694470; $rad = $PI / 180.0; print "rad = $rad\n"; $h1 = $h2 = 0.0; if($g1 < 0) { $g1 = 360.0+ $g1; } $fr1 = $f1 * $rad; $gr1 = $g1 * $rad; if($g2 < 0) { $g2 = 360.0 + $g2; } $fr2 = $f2 * $rad; $gr2 = $g2 * $rad; $N1 = $a / (sqrt(1.0 - $e2 * sin($fr1) * sin($fr1))); $x1 = ($N1 + $h1) * cos($fr1) * cos($gr1); $y1 = ($N1 + $h1) * cos($fr1) * sin($gr1); $z1 = ($N1 * (1.0 - $e2) + $h1)* sin($fr1); $N2 = $a / (sqrt(1.0 - $e2 * sin($fr2) * sin($fr2))); $x2 = ($N2 + $h2) * cos($fr2) * cos($gr2); $y2 = ($N2 + $h2) * cos($fr2) * sin($gr2); $z2 = ($N2 * (1.0 - $e2) + $h2) * sin($fr2); $r = sqrt(($x1 - $x2) * ($x1 - $x2) + ($y1 - $y2) * ($y1 - $y2) + ($z1 - $z2) * ($z1 - $z2)); $wr = &asin($r / 2 / $a); $w = $wr / $rad; $s = $a * 2 * $wr; print "start ido $f1 : $g1\n"; print "end ido $f2 : $g2\n"; print "kyori $r\n"; print "tihyo $s\n"; print "hansya $w\n"; exit; sub asin { atan2($_[0],sqrt(1 - $_[0] * $_[0])); }