已知兩地經緯度(lon1, lat1)、(lon2, lat2),地球半徑 R ≈ 6371 km。球面距離公式(Haversine):
double dLon = (lon2 - lon1) * PI / 180.0;
double dLat = (lat2 - lat1) * PI / 180.0;
double a = sin(dLat/2)*sin(dLat/2) +
cos(lat1*PI/180)*cos(lat2*PI/180)*sin(dLon/2)*sin(dLon/2);
double c = 2 * atan2(sqrt(a), sqrt(1-a));
double distance = R * c;
或用向量內積求夾角:
// 轉換為單位向量
x = cos(lat)*cos(lon), y = cos(lat)*sin(lon), z = sin(lat)
cosθ = x1*x2 + y1*y2 + z1*z2
distance = R * acos(cosθ)
需包含 <math.h>,角度轉弧度乘 PI/180。