計算兩個經緯度之間距離的C語言代碼

pkiek23 9年前發布 | 5K 次閱讀 C/C++

//
//  main.c
//  Distance
//
//

include <stdio.h>

include <math.h>

define PI 3.1415926

define EARTH_RADIUS 6378.137 //地球近似半徑

double radian(double d); double get_distance(double lat1, double lng1, double lat2, double lng2);

// 求弧度 double radian(double d) { return d * PI / 180.0; //角度1? = π / 180 }

//計算距離 double get_distance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = radian(lat1); double radLat2 = radian(lat2); double a = radLat1 - radLat2; double b = radian(lng1) - radian(lng2);

double dst = 2 * asin((sqrt(pow(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * pow(sin(b / 2), 2) )));

dst = dst * EARTH_RADIUS;
dst= round(dst * 10000) / 10000;
return dst;

}

int main (int argc, const char * argv[]) {

double lat1 = 39.90744;
double lng1 = 116.41615;//經度,緯度1
double lat2 = 39.90744;
double lng2 = 116.30746;//經度,緯度2
// insert code here...

double dst = get_distance(lat1, lng1, lat2, lng2);
printf("dst = %0.3fkm\n", dst);  //dst = 9.281km
return 0;

} </pre>

 本文由用戶 pkiek23 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!