Calculating coordinates given a bearing and a distance

后端 未结 6 1376
礼貌的吻别
礼貌的吻别 2020-12-08 18:07

I am having problems implementing the function described here here.

This is my Java implementation:

private static double[] pointRadialDistance(doubl         


        
6条回答
  •  鱼传尺愫
    2020-12-08 18:23

    When I implemented this, my resulting latitudes were correct but the longitudes were wrong. For example starting point: 36.9460678N 9.434807E, Bearing 45.03334, Distance 15.0083313km The result was 37.0412865N 9.315302E That's further west than my starting point, rather than further east. In fact it's as if the bearing was 315.03334 degrees.

    More web searching led me to: http://www.movable-type.co.uk/scripts/latlong.html The longitude code is show below (in C# with everything in radians)

            if ((Math.Cos(rLat2) == 0) || (Math.Abs(Math.Cos(rLat2)) < EPSILON))
            {
                rLon2 = rLon1;
            }
            else
            {
                rLon2 = rLon1 + Math.Atan2(Math.Sin(rBearing) * Math.Sin(rDistance) * Math.Cos(rLat1), Math.Cos(rDistance) - Math.Sin(rLat1) * Math.Sin(rLat2));
            }
    

    This seems to work fine for me. Hope it's helpful.

提交回复
热议问题