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

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

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
}

Вы algorithm-design можете поиграть с моим jsPerf latitude-longitude и увидеть results here.

Недавно мне нужно lat-long было сделать то же самое arithmetic на 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...

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

algorithm

math

maps

latitude-longitude

haversine

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

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