Я пытаюсь создать калькулятор расстояния гаверсинуса, где я могу ввести две координаты широты/долготы, и он даст расстояние между ними с помощью формулы гаверсинуса. Это на Lua, и вот код:
local R = 6371000 -- metres
local lat1 = la1 * math.pi/180
local lat2 = la2 * math.pi/180
local dlat = (lat2 - lat1) * math.pi/180
local dlong = (long2 - long1) * math.pi/180
local a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(lat1) * math.cos(lat2) * math.sin(dlong/2) * math.sin(dlong/2)
local c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
local d = R * c -- in metres
d = d / 1000 -- in kilometers
print(d)
Я протестировал его на нескольких онлайн-проверщиках расстояния, которые используют эту формулу, и она всегда отличается большим отрывом. А еще я взял код отсюда, а потом изменил его на Lua: https://www.movable-type.co.uk/scripts/latlong.html
Любая идея, почему это не работает? Спасибо.
math.rad
для преобразования градусов в радианы. - person lhf   schedule 20.11.2020