Законът за косинусите и формулата на Хаверсин ще дадат идентични резултати, ако приемем машина с безкрайна прецизност. Формулата на Haversine е по-устойчива на грешки с плаваща запетая. Въпреки това, днешните машини имат двойна точност от порядъка на 15 значими цифри и законът на косинусите може да работи добре за вас. И двете формули предполагат сферична земя, докато итеративното решение на Висенти (най-точното) предполага елипсоидална земя (в действителност земята дори не е елипсоид - тя е геоид). Някои препратки:http://www.movable-type. co.uk/scripts/gis-faq-5.1.html
Става по-добре:имайте предвид, че географската ширина, която ще се използва в закона за косинусите, както и в Haversine е геоцентричната ширина, която е различна от геодезическата ширина. За сфера тези две са еднакви.
Кое е най-бързо за изчисляване?
В ред от най-бързия към най-бавен са:закон на косинусите (5 триг. извиквания) -> hasrsine (включва sqrt) -> Vicenty (трябва да реши това итеративно в цикъл for)
Кое е най-точно?
Висенти.
Кое е най-доброто, когато се вземат предвид скоростта и точността?
Ако вашият проблемен домейн е такъв, че за разстоянията, които се опитвате да изчислите, земята може да се счита за плоска, тогава можете да изработите (няма да давам подробности) формула от формата x =kx * разлика в дължината , y =ky * разлика в географската ширина. Тогава разстояние =sqrt(dxdx + dy dy). Ако вашият проблемен домейн е такъв, че може да бъде решен с разстояние на квадрат, тогава няма да ви се налага да приемате sqrt и тази формула ще бъде толкова бърза, колкото е възможно да получите. Има допълнителното предимство, че можете да изчислите вектора разстояние – x е разстоянието в източна посока, а y е разстоянието в северната посока. В противен случай експериментирайте с 3 и изберете кое работи най-добре във вашата ситуация.