Class: GPSTools::Distance
- Inherits:
-
Object
- Object
- GPSTools::Distance
- Defined in:
- lib/gps_tools/distance.rb
Instance Method Summary collapse
-
#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.
-
#initialize(unit = "mile") ⇒ Distance
constructor
A new instance of Distance.
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 |