Формула Гаверсинуса или как найти расстояние на сферической поверхности между двумя точками, то есть через долготу и широту:
или
R – радиус Земли;
φ1, φ2 – широта в радианах;
λ1, λ 2 – долгота в радианах;
haversinus(α) – функция Гаверсинуса.
Определение расстояния по формуле Гаверсинуса, зная широту и долготу двух точек на поверхности Земли на C++:
#include "stdafx.h" #include <cmath> #include <iostream> using namespace std; const double PI=3.14159265; double Gaversinus(double lat1,double lon1,double lat2,double lon2) { double R=6371; // радиус Земли в км. double lat=(lat2-lat1)*(PI/180); double lon=(lon2-lon1)*(PI/180); double rez=sin(lat/2)*sin(lat/2)+cos(lat1*(PI/180))*cos(lat2*(PI/180))*sin(lon/2)*sin(lon/2); double d=2*R*atan2(sqrt(rez), sqrt(1-rez)); return d; } int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Rus"); cout<<"Расстояние в км равно: "<<Gaversinus(32.17, -73.21, 34.77, -78.1)<<endl; system("pause"); return 0; }
Результат работы программы вычисления расстояния по формуле Гаверсинуса на C++: