找到知道纬度/伦敦/航向/速度的下一个位置
本文关键字:速度 下一个 位置 航向 伦敦 纬度 | 更新日期: 2023-09-27 18:36:14
>知道十进制纬度、十进制经度、速度(公里/小时)、标题60秒后如何找到汽车的下一个位置?有什么算法可以做到这一点吗?
这可能会有所帮助:
distance_traveled = speed * time
然后,使用航向作为角度(三角函数)计算速度的 x 和 y 分量:
speed_x=distance_traveled * Math.Cos(heading/180*Math.PI)
speed_y=distance_traveled * Math.Sin(heading/180*Math.PI)
接下来,了解如何将经度/经度映射到某种形式的 x/y 坐标,添加speed_x经纬和经度speed_y,然后再次转换为经度/经度。
最后一个是一个棘手的问题,看这里:http://www.movable-type.co.uk/scripts/latlong.html
事实上,你会在那篇文章中找到所有内容!
我找到了更准确的公式
这段代码对我有用:
1.首先我们必须计算距离(速度*时间)。
2.在我的程序中,我将距离转换为KM,因为我也使用以KM为单位的地球半径。
常量双半径地球公里= 6371.01f;
kmDistance = kmSpeed * (timer1.Interval / 1000f) / 3600f;
var distRatio = kmDistance / radiusEarthKilometres;
var distRatioSine = Math.Sin(distRatio);
var distRatioCosine = Math.Cos(distRatio);
var startLatRad = deg2rad(lat0);
var startLonRad = deg2rad(lon0);
var startLatCos = Math.Cos(startLatRad);
var startLatSin = Math.Sin(startLatRad);
var endLatRads = Math.Asin((startLatSin * distRatioCosine) + (startLatCos * distRatioSine * Math.Cos(angleRadHeading)));
var endLonRads = startLonRad
+ Math.Atan2(Math.Sin(angleRadHeading) * distRatioSine * startLatCos,
distRatioCosine - startLatSin * Math.Sin(endLatRads));
newLat = rad2deg(endLatRads);
newLong = rad2deg(endLonRads);