首页 > 解决方案 > c#中2个陆地点之间的距离计算

问题描述

使用下面的函数,我通过传递纬度 (a)、纬度 (b)、经度 (a)、经度 (b) 来计算 2 个陆地点之间的距离,并使用下面给出的公式以公里为单位进行计算,但结果不是正确,我该如何解决?

代码 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;
}

标签: c#latitude-longitude

解决方案


我该如何解决?

您通过将程序分解成越来越小的部分来解决计算机编程中的问题,以发现哪个部分不正确。

你知道计算不正确,这意味着你必须知道正确答案是什么。那太棒了; 这就是你会发现问题的方式:

  • 手工计算出你认为程序中每个表达式的正确值。
  • 然后编写一个程序来依次计算每个表达式
  • 然后将该程序与您对该步骤的正确值的预测进行比较。
  • 在某些时候,程序和您的手动计算会有所不同。 这就是错误所在

推荐阅读