Формула Гаверсинуса или как найти расстояние на сферической поверхности между двумя точками, то есть через долготу и широту:

или

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++:
![]()
