无法计算纬度。使用公式

时间:2013-08-25 18:57:27

标签: c# gps physics

我需要根据旧的经度和纬度来计算经度和纬度,距离和指向该点的方向。

从此链接:http://www.movable-type.co.uk/scripts/latlong.html

我得到了这些公式:

newLatitude = Math.Asin(Math.Sin(oldLatitude) * Math.Cos(distanceTravelled / earthRadius) + Math.Cos(oldLatitude) * Math.Sin(distanceTravelled / earthRadius) * Math.Cos(currentDirection));

newLongitude = oldLongitude + Math.Atan2(Math.Sin(currentDirection) * Math.Sin(distanceTravelled / earthRadius) * Math.Cos(oldLatitude), Math.Cos(distanceTravelled / earthRadius) - Math.Sin(oldLatitude) * Math.Sin(oldLatitude));

我有加速,例如0.1米/秒2

行走时间:从当前时间 - 开始时间计算。

然后我计算行进的距离:

 distanceTravelled = distanceTravelled/1000;

我也有度数的方向移动:例如90度。 (东)

但我在新的Latitude see-image中收到错误:

enter image description here

我必须在Radian中输入方向吗?

KM的距离而不是米?

请帮助我获得正确的纬度?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 我在上面的公式中使用纬度和经度的度数和小数。 我们必须使用Radians

将纬度,经度和方向转换为Radians:

    oldLatitude = Math.PI * oldLatitude / 180;
    oldLongitude = Math.PI * oldLongitude / 180;
    currentDirection = Math.PI * currentDirection / 180.0;

然后再将新的经度和纬度从Radians转换为Degree

            newLatitude = 180 * newLatitude / Math.PI;
            newLongitude = 180 * newLongitude / Math.PI;