Пеленг с использованием двух наборов координат (широты и долготы) в C

Я начал работать над автономным вертолетом на радиоуправлении в г. Мне нужна помощь в вычислении остроты подшипников. Я использую два набора координат (широту и долготу), один - текущее местоположение, а другой - пункт назначения. Я преобразовал широту и долготу в десятичный формат, так что ....

40°58'19.86"N = 40.972183
74°14'52.74"W = 74.247983

Может ли кто-нибудь показать мне код в c, чтобы найти подшипник или формулу, которую я могу использовать?

я посмотрел: http://www.movable-type.co.uk/scripts/latlong.html, и когда я переношу его на c, результаты не имеют смысла.

Вот что я пробовал:

 double x = Sin(Longitude2 - Longitude1) * Cos(Latitude2);
 double y = Cos(Latitude1) * Sin(Latitude2) - Sin(Latitude1) * Cos(Latitude2) * Cos(Longitude2 - Longitude1);
 double heading = (Atan2(x, y) % 2 * 3.14159265) (180/3.14159265);

person Kenny    schedule 12.08.2012    source источник
comment
Покажите нам код C, который вы пытались сделать.   -  person Graham Borland    schedule 12.08.2012
comment
я только что добавил код, который пробовал   -  person Kenny    schedule 12.08.2012
comment
двойной заголовок = (fmod (atan2 (x, y), 2) * 3,14159265) * (180 / 3,14159265); --- ›это будет правильная реализация?   -  person Kenny    schedule 12.08.2012


Ответы (2)


Вы конвертировали свои координаты из градусов в радианы перед расчетами?

angleRad = 3.14159265 * angleDeg / 180; И

bearing = Atan2(y, x); на этом веб-сайте. Пеленг следует переводить из рад в градусы по очереди:

bearing = 180 * bearing / 3.14159265; и в случае отрицательного значения со временем:

bearing = bearing + 360;

Я не знаю, как это написать, используя указанное выше соглашение (с "%").

Широта1 и Долгота1 - координаты наблюдателя. Широта2 и Долгота2 - координаты точки назначения.

Формулы с этого сайта работают хорошо.

person darekk    schedule 15.06.2013

Для очень маленькой области, которую вы рассматриваете, вы можете предположить, что мир плоский. Если вам также нужно, чтобы это работало локально, вы можете предварительно рассчитать значение градуса широты / долготы на земле в метрах (или футах).

Затем просто преобразуйте дельту широты / долготы в расстояние и выполните обычный триггер.

Чтобы преобразовать расстояние в широту / долготу, вы можете использовать Google Earth для измерения или Как преобразовать широту или долготу в метры?

person Martin Beckett    schedule 12.08.2012