Как я могу рассчитать расстояние между тремя или четырьмя точками широты и долготы? (Формула Haversine) - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть формула haversine для двух точек, и она прекрасно работает. Но как я могу найти расстояние между тремя или более точками широты и долготы?

Пример формулы haversine для двух точек:

// C# program for the haversine formula 
using System; 
class GFG 
{ 

static double haversine(double lat1, double lon1, 
                        double lat2, double lon2) 
{ 
    // distance between latitudes and longitudes 
    double dLat = (Math.PI / 180) * (lat2 - lat1); 
    double dLon = (Math.PI / 180) * (lon2 - lon1); 

    // convert to radians 
    lat1 = (Math.PI / 180) * (lat1); 
    lat2 = (Math.PI / 180) * (lat2); 

    // apply formulae 
    double a = Math.Pow(Math.Sin(dLat / 2), 2) +  
               Math.Pow(Math.Sin(dLon / 2), 2) *  
               Math.Cos(lat1) * Math.Cos(lat2); 
    double rad = 6371; 
    double c = 2 * Math.Asin(Math.Sqrt(a)); 
    return rad * c; 
} 

// Driver Code 
public static void Main() 
{ 
    double lat1 = 51.5007; 
    double lon1 = 0.1246; 
    double lat2 = 40.6892; 
    double lon2 = 74.0445; 
    Console.WriteLine(haversine(lat1, lon1,  
                                lat2, lon2) + " K.M."); 
} 
} 

1 Ответ

0 голосов
/ 23 апреля 2020

Постройте график, где каждая точка - это узел, а расстояние между двумя точками (узлами) - это вес ребра между этими двумя узлами. Затем запустите алгоритм Дейкстры от начальной точки, вы найдете расстояние (кратчайшие пути) между всеми точками от начальной точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...