diff --git a/helpers/latlon.c b/helpers/latlon.c new file mode 100644 index 0000000..4c1788a --- /dev/null +++ b/helpers/latlon.c @@ -0,0 +1,36 @@ +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +#define R 6371 +#define TO_RAD (3.1415926536 / 180) +double dist(double th1, double ph1, double th2, double ph2) +{ + double dx, dy, dz; + ph1 -= ph2; + ph1 *= TO_RAD, th1 *= TO_RAD, th2 *= TO_RAD; + + dz = sin(th1) - sin(th2); + dx = cos(ph1) * cos(th1) - cos(th2); + dy = sin(ph1) * cos(th1); + return asin(sqrt(dx * dx + dy * dy + dz * dz) / 2) * 2 * R; +} + +int main(int argc, const char * argv[]) +{ + if(argc < 5 || argc > 5){ + return 1; + } + float coords[4]; + for(int i=1;i<5;i++){ + if(atof(argv[i]) == 0){ + return 1; + } + coords[i] = atof(argv[i]); + } + + double d = dist(coords[1], coords[2], coords[3], coords[4]); + printf("%.1f\n", d); + + return 0; +}