У меня есть формула 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.");
}
}