2016-07-24 92 views
1

我正在用c#编写游戏程序。我想计算应用程序屏幕中对象的移动。例如,我想知道我的对象是否从源移动到目标(使用其latitudelongitude)与speeddirection(以及可能的turn rate),一段时间后的目标点是多少。c的地理图书馆#

换句话说,在需要

一些像这样的事情:

void Move(double sourceLatitude, double sourceLongitude, double speed, double bearingOrDirection, double turnRate, double destinationLatitude, double destinationLongitude) 
{ 
    // code goes here 
} 

是否有这个方法或一些这样的事情,任何图书馆?

+2

https://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate(v=vs.110).aspx – 2016-07-24 14:18:54

+0

这应该在[softwarerecs.se]上提问。 –

+0

GDAL可能会做你想做的事情:http://www.gisinternals.com/release.php – Brannon

回答

0

必须先将纬度/经度转换为正交坐标系统,如通用横轴墨卡托(UTM)。然后根据给定的航向计算正交坐标系中相应的速度分量。使用时间步长,计算位置变化并将其添加到原始坐标。最后,更新的坐标被转换回经度/纬度。在伪代码中:

(latitude_degN, longitude_degE) --> (easting_m, northing_m, utm_zone) 
heading_rad += turn_rate_radps * timestep_s 
east_velocity_mps = sin(heading_rad) 
north_velocity_mps = cos(heading_rad) 
delta_east_m = east_velocity_mps * timestep_s 
delta_north_m = north_velocity_mps * timestep_s 
easting_m += delta_east_m 
northing_m += delta_north_m 
(easting_m, northing_m, utm_zone) --> (latitude_degN, longitude_degE) 

这假设北向导向(0度北,增加到90度东)和一个小时间步。