Вычисление расстояния по формуле Гаверсинуса на C++

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

Формула Гаверсинуса

или

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

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

расстояния по формуле Гаверсинуса на C++ в км

Leave a Reply

Ваш e-mail не будет опубликован.