17 lines
454 B
Ruby
17 lines
454 B
Ruby
include Math
|
|
|
|
def haversine(lat1, lon1, lat2, lon2)
|
|
r = 6372.8 # Earth radius in kilometers
|
|
deg2rad = PI/180 # convert degress to radians
|
|
|
|
dLat = (lat2 - lat1) * deg2rad
|
|
dLon = (lon2 - lon1) * deg2rad
|
|
lat1 = lat1 * deg2rad
|
|
lat2 = lat2 * deg2rad
|
|
|
|
a = sin(dLat / 2)**2 + cos(lat1) * cos(lat2) * sin(dLon / 2)**2
|
|
c = 2 * asin(sqrt(a))
|
|
r * c
|
|
end
|
|
|
|
puts "distance is #{haversine(36.12, -86.67, 33.94, -118.40)} km "
|