+ -
当前位置:首页 → 问答吧 → 根据经纬度坐标计算实际距离

根据经纬度坐标计算实际距离

时间:2010-10-21

来源:互联网

  1. double hypot(double x, double y) {
  2.       return sqrt(x * x + y * y);
  3. }

  4. double distance(double wd1, double jd1, double wd2, double jd2) {// 根据经纬度坐标计算实际距离
  5.       double x, y, out;
  6.       double PI = 3.1415926535898;
  7.       double R = 6.371229 * 1e6;
  8.        x = (jd2 - jd1) * PI * R * cos( ( (wd1 + wd2) / 2) * PI / 180) / 180;
  9.        y = (wd2 - wd1) * PI * R / 180;
  10.        out = hypot(x, y);
  11.        return out;
  12.   }
复制代码
请问上面程序转成perl的话是如何写?


http://blog.csdn.net/zgl_dm/archive/2007/11/23/1899598.aspx

作者: 醒目   发布时间: 2010-10-21



QUOTE:
[root@localhost ]# perl  1.pl
101.36658837807
[root@localhost ]# cat 1.pl
#!/bin/perl
#

my $JuLi= &distance(116.41794,39.99347,116.41787,39.99256);#$wd1, $jd1, $wd2, $jd2
print "$JuLi \n";

sub distance() {

my ($wd1, $jd1, $wd2, $jd2);
$wd1=$_[1];
$jd1=$_[0];
$wd2=$_[3];
$jd2=$_[2];

my $PI=3.1415926535898;
my $R = 6.371229 * 1e6;
#print "$R \n";

$x = ($jd2 - $jd1) * $PI * $R * cos( ( ($wd1 + $wd2) / 2) * $PI / 180) / 180;
$y = ($wd2 - $wd1) * $PI * $R / 180;

my $temp = sqrt($x * $x + $y * $y);

return $temp;


}

作者: 枫影谁用了   发布时间: 2010-10-21