2016-07-24 12 views
1

私はC#でゲームアプリケーションをプログラミングしています。私はアプリの画面でオブジェクトの動きを計算したい。たとえば、私のオブジェクトが、speeddirection(そして可能であればturn rate)のソースから目的地(latitudelongitudeを使用)に移動しているかどうかを知りたいのですが、時間の経過後の目的地は何ですか?言い換えれば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 –

+0

これは[softwarerecs.se]で尋ねる必要があります。 –

+0

GDALはあなたが望むことをするかもしれません:http://www.gisinternals.com/release.php – Brannon

答えて

0

まず、緯度経度をUTM(Universal Transverse Mercator)などの直交座標系に変換する必要があります。次いで、直交座標系における対応する速度成分は、所与の見出しから計算される。時間ステップを使用して、位置の変化が計算され、元の座標に追加されます。最後に、更新された座標は緯度/経度に変換されます。擬似コードで:

(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) 

これは、小規模の時間ステップ(90°東に増加、0度北)北指向方位をとります。