Расчет расстояния между 2 наземными точками в c # - PullRequest
0 голосов
/ 20 сентября 2019

с помощью функции, приведенной ниже, я вычисляю расстояние между двумя сухопутными точками, передавая широту (а), широту (b), долготу (а), долготу (b) и выполняя вычисления в километрах по формуле, приведенной ниже, норезультат не верный, как я могу это решить?

Код C #:

public static double CalcoloDistinzaFra2PuntiTerrestri(double LatA, double LonA, double LatB, double LonB)
{
    double tot = 0;
    const double R = 6371;
    const double pigreco = 3.1415927;
    double lat_alfa, lat_beta;
    double lon_alfa, lon_beta;
    double fi, p;
    lat_alfa = pigreco * LatA / 180;
    lat_beta = pigreco * LatB / 180;
    lon_alfa = pigreco * LonA / 180;
    lon_beta = pigreco * LonB / 180;
    fi = Math.Abs(lon_alfa - lon_beta);
    p = Math.Acos(Sin(lat_beta) * Sin(lat_alfa) + Cos(lat_beta) * Cos(lat_alfa) * Cos(fi));
    tot = p * R;
    return tot;
}

Ответы [ 2 ]

10 голосов
/ 20 сентября 2019

как я могу это решить?

Вы решаете проблемы в компьютерном программировании, разбивая программу на более мелкие и мелкие части, чтобы определить, какая часть неверна.

Вы знаете, что расчет неверен, что означает, что вы должны знать, каков правильный ответ.Замечательно;вот как вы найдете проблему:

  • Отработайте вручную то, что вы считаете правильным значением каждого выражения в вашей программе.
  • Затем напишите программу для вычисления только каждого выражения по очереди .
  • Затем сравните эту программу с вашим прогнозом того, каким должно быть правильное значение для этого шага.
  • В какой-то момент программа и ваши ручные вычисления будут отличаться. Вот где ошибка .
1 голос
/ 20 сентября 2019

Вы используете неправильную формулу, вы должны использовать Формула Haversine , как сказал @Elaskanator.ТАКЖЕ используйте Math.PI вместо 3.1415927.

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