пролог: вычисление расстояния между двумя координатами

Я хочу рассчитать расстояние между двумя точками с их координатами. Я видел этот вопрос, и он имеет реализации в разные языки. Поскольку я новичок в прологе, было бы очень полезно, если бы кто-нибудь мог создать предложение пролога, которое может выполнять такую ​​​​операцию.

Я нашел эту функцию python проще:

from math import cos, asin, sqrt
def distance(lat1, lon1, lat2, lon2):
    p = 0.017453292519943295
    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))

person Ahashan Alam Sojib    schedule 25.03.2017    source источник


Ответы (1)


Предикат я сделал сам. Он приведен ниже:

distance(Lat1, Lon1, Lat2, Lon2, Dis):-
    P is 0.017453292519943295,
    A is (0.5 - cos((Lat2 - Lat1) * P) / 2 + cos(Lat1 * P) * cos(Lat2 * P) * (1 - cos((Lon2 - Lon1) * P)) / 2),
    Dis is (12742 * asin(sqrt(A))).

Пример запуска для координат (23.700042,90.452103) и (23.767968, 90.425657); вывод:

?- main.
Distance is: 8.01840452822046
true.

Ниже я привел результат онлайн-калькулятора координатного расстояния, который показывает, что результат пролога достаточно точен. Онлайн-калькулятор координатного расстояния

person Ahashan Alam Sojib    schedule 25.03.2017