Haversine


import math
import webbrowser

def haversine(lat1, lon1, lat2, lon2):
    lat1, lon1, lat2, lon2 = map(math.radians, [lat1, lon1, lat2, lon2])
    dlat = lat2 - lat1
    dlon = lon2 - lon1
    a = math.sin(dlat / 2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2)**2
    c = 2 * math.asin(math.sqrt(a))
    R = 6371
    return R * c

lat1, lon1 = -2.5916, 140.6689
lat2, lon2 = -8.4932, 140.3947

jarak = haversine(lat1, lon1, lat2, lon2)
print("Jarak garis lurus: {:.2f} km".format(jarak))

maps_link = "https://www.google.com/maps/dir/{},{}/{},{}".format(lat1, lon1, lat2, lon2)
print("\n\nMaps:", maps_link)

input("\nTekan Enter untuk membuka peta di browser...")
webbrowser.open(maps_link)



import math

def haversine(lat1, lon1, lat2, lon2):
    R = 6371  # Radius Bumi dalam kilometer
    lat1, lon1, lat2, lon2 = map(math.radians, [lat1, lon1, lat2, lon2])

    dlat = lat2 - lat1
    dlon = lon2 - lon1

    a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon/2)**2
    c = 2 * math.asin(math.sqrt(a))
    return R * c

# Koordinat
fakfak = (-2.88524, 132.2658)
yalimo = (-3.78528, 139.4466)
target = (-3.66093, 133.7745)

# Hitung jarak
jarak_fakfak = haversine(fakfak[0], fakfak[1], target[0], target[1])
jarak_yalimo = haversine(yalimo[0], yalimo[1], target[0], target[1])

print("Jarak Fakfak → Target: {:.2f} km".format(jarak_fakfak))
print("Jarak Yalimo → Target: {:.2f} km".format(jarak_yalimo))

# Perbandingan
lebih_dekat = "Fakfak" if jarak_fakfak < jarak_yalimo else "Yalimo"
print(">>> {} lebih dekat ke target.".format(lebih_dekat))