HaversineDistance
Back to ListDescription: Calculate the surface distance between two pair of coordinates of the globe
FileMaker Prototype:
Set Variable [$res; ACF_Run("HaversineDistance"; float_lat1; float_lon1; float_lat2; float_lon2)]
Category: MATH
Function source:
Function HaversineDistance ( float lat1, float lon1, float lat2, float lon2 )
// Earth's radius in kilometers
float R = 6371;
// Convert degrees to radians
float fi1 = lat1 * pi / 180;
float fi2 = lat2 * pi / 180;
float dtfi = (lat2 - lat1) * pi / 180;
float dtlb = (lon2 - lon1) * pi / 180;
// Haversine formula
float a = sin(dtfi / 2)^2 + cos(fi1) * cos(fi2) * sin(dtlb / 2)^2;
float c = 2 * atan2(sqrt(a), sqrt(1 - a));
return R * c;
End
