Географическая библиотека для C#

Я программирую игровое приложение с помощью C#. Я хочу рассчитать движение объектов на экране приложения. Например, я хочу знать, если мой объект перемещается из источника в пункт назначения (используя их latitude а также longitude) с speed а также direction (и если возможно turn rate), что является пунктом назначения через некоторое время.

другими словами, нужно что-то вроде этого:

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

Есть ли в библиотеке такой метод или что-то подобное?

1 ответ

Сначала необходимо преобразовать широту / долготу в ортогональную систему координат, такую ​​как универсальная поперечная проекция Меркатора (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 градусов восточной долготы) и небольшой временной шаг.

Другие вопросы по тегам