#include "stdafx.h"
#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6371.004
#define PI 3.1415926
double rad(double d)
{
return d * PI / 180.0;
}
double getDistanceVer1(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double radLng1 = rad(lng1);
double radLng2 = rad(lng2);
double s = acos(sin(radLat1)*sin(radLat2)+cos(radLat1)*cos(radLat2)*cos(radLng1-radLng2));
s = s * EARTH_RADIUS;
return s;
}
double getDistanceVer2(double lat1, double lng1, double lat2, double lng2)
{
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
s = s * EARTH_RADIUS;
return s;
}
int main(int argc, char** argv)
{
double lat1,lng1,lat2,lng2,distance1, distance2;
lat1 = 113.602525;
lng1 = 34.768901926;
lat2 = 113.69516016;
lng2 = 34.755820614175;
printf("using Version 1:\n");
distance1=getDistanceVer1(lat1,lng1,lat2,lng2);
printf("the distance is %f Km:\n",distance1);
printf("using Version 2:\n");
distance2=getDistanceVer2(lat1,lng1,lat2,lng2);
printf("the distance is %f Km:\n",distance2);
return 0;
}
经纬度算距离C源码
最新推荐文章于 2022-07-26 08:00:38 发布