2011-07-09 7 views
1

Я пробовал эту формулу, чтобы получить азимут/подшипник двух точек карты.Расчет азимута/подшипника в объективе-c

Я имею в виду, чтобы получить реальное северное направление вектора, выполненного с двумя координатами.

θ = atan2 (син (Δlong) .cos (LAT2), COS (LAT1) .sin (LAT2) -sin (LAT1) .cos (LAT2) .cos (Δlong))

Азимут = θ * 180/M_PI;

azimuth = (азимут + 360) MOD 360;

Я получил эту формулу с этой страницы (http://www.yourhomenow.com/house/haversine.html), но я никогда не получаю тот же результат.

Есть ли другой способ получить азимут двух точек?

Спасибо!

ответ

2

Вам также необходимо иметь Δlong, lat1 и lat2 в радианах. Поэтому перед началом расчета вы должны умножить все их на M_PI/180.

+0

Вы имеете в виду 180/M_PI, правильно? – saimonx

+0

Теперь у меня есть: atan2 (sin ((to.longitude * 180/M_PI) - (from.longitude * 180/M_PI)) * cos (to.latitude * 180/M_PI), cos (from.latitude * 180/M_PI) * Sin (to.latitude * 180/M_PI) -sin (from.latitude * 180/M_PI) * COS (to.latitude * 180/M_PI) * сов ((to.longitude * 180/M_PI) - (с. долгота * 180/M_PI))); Но у меня нет нужного результата – saimonx

+0

@saimonx Нет, я имел в виду 'M_PI/180'. Преобразование из deg в рад умножается на 'M_PI/180', обратное преобразование от rad до deg - умножение на' 180/M_PI'. – Howard