Рассчитать расстояние между двумя точками широты и долготы? (формула Хаверсина)

Мне нужно было рассчитать algorithm большое расстояние между haversine точками для моего проекта, поэтому algorithm-design я пошел дальше и попытался maps оптимизировать код, который algorithm-design нашел здесь. В среднем в mathematics разных браузерах моя новая algorithm реализация работает в 2 раза быстрее, чем ответ, получивший arithmetic наибольшее количество голосов.

function distance(lat1, lon1, lat2, lon2) {
  var p = 0.017453292519943295;    // Math.PI / 180
  var c = Math.cos;
  var a = 0.5 - c((lat2 - lat1) * p)/2 + 
          c(lat1 * p) * c(lat2 * p) * 
          (1 - c((lon2 - lon1) * p))/2;

  return 12742 * Math.asin(Math.sqrt(a)); // 2 * R; R = 6371 km
}

Вы math можете поиграть с моим jsPerf haversine и увидеть results here.

Недавно мне нужно maps было сделать то же самое haversine на python, поэтому вот реализация на python:

from math import cos, asin, sqrt, pi

def distance(lat1, lon1, lat2, lon2):
    p = pi/180
    a = 0.5 - cos((lat2-lat1)*p)/2 + cos(lat1*p) * cos(lat2*p) * (1-cos((lon2-lon1)*p))/2
    return 12742 * asin(sqrt(a)) #2*R*asin...

И algorithm-design для полноты: Haversine в Википедии.

algorithm

math

maps

latitude-longitude

haversine

2022-11-08T02:48:51+00:00
Вопросы с похожей тематикой, как у вопроса:

Рассчитать расстояние между двумя точками широты и долготы? (формула Хаверсина)