Class: GPSTools::Distance

Inherits:
Object
  • Object
show all
Defined in:
lib/gps_tools/distance.rb

Instance Method Summary collapse

Constructor Details

#initialize(unit = "mile") ⇒ Distance

Returns a new instance of Distance.



2
3
4
5
6
7
8
9
10
11
12
# File 'lib/gps_tools/distance.rb', line 2

def initialize(unit = "mile")
    @unit = unit
    case @unit
    when "mile"
        @earth_radius = 3958.8
    when "km"
        @earth_radius = 6378
    when "nm"
        @earth_radius = 3440.1 
    end
end

Instance Method Details

#get_distance(coord1, coord2) ⇒ Object

Returns the distance in miles (unit = “mile”), kilometers (unit = “km”), or nautical miles (unit = “nm”) between two gps coordinates, coord1 and coord2



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/gps_tools/distance.rb', line 17

def get_distance(coord1, coord2)
    lat1 = coord1[0]
    long1 = coord1[1]
    lat2 = coord2[0]
    long2 = coord2[1]

    lat_diff = lat2 - lat1
    long_diff = long2 - long1

    a = Math.sin(degrees_to_radians(lat_diff)/2) * Math.sin(degrees_to_radians(lat_diff)/2) + Math.sin(degrees_to_radians(long_diff)/2) * Math.sin(degrees_to_radians(long_diff)/2) * Math.cos(degrees_to_radians(lat1)) * Math.cos(degrees_to_radians(lat2))
    c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
    
    distance = @earth_radius * c
    return distance
end