ACF Library

HaversineDistance

Back to List

Description: 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

Back to List