class GpxRuby::Gpx::Point
Constants
- RADIUS_KM
Attributes
lat[RW]
lon[RW]
Public Class Methods
new(a_hash)
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 11 def initialize(a_hash) @lat = a_hash[:lat] @lon = a_hash[:lon] end
Public Instance Methods
+(a_point)
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 28 def +(a_point) nlat = lat + a_point.lat nlon = lon + a_point.lon Point.new lat: nlat, lon: nlon end
/(a_scalar)
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 34 def /(a_scalar) nlat = lat / a_scalar.to_f nlon = lon / a_scalar.to_f Point.new lat: nlat, lon: nlon end
[](index)
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 17 def [](index) case index when 0 lat when 1 lon else raise 'Invalid index!' end end
distance(a_point)
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 55 def distance(a_point) p_point = self rad_per_deg, radius_meter = Math::PI/180, RADIUS_KM * 1000 dlon_rad = (a_point.lon-p_point.lon) * rad_per_deg dlat_rad = (a_point.lat-p_point.lat) * rad_per_deg lat1_rad = p_point.lat * rad_per_deg lat2_rad = a_point.lat * rad_per_deg p_point = Math.sin(dlat_rad/2)**2 + Math.cos(lat1_rad) * Math.cos(lat2_rad) * Math.sin(dlon_rad/2)**2 c = 2 * Math::atan2(Math::sqrt(p_point), Math::sqrt(1-p_point)) radius_meter * c end
to_a()
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 44 def to_a [lat, lon] end
to_hash()
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 48 def to_hash { lat: lat, lon: lon } end
Also aliased as: to_h
to_s()
click to toggle source
# File lib/gpx_ruby/gpx/point.rb, line 40 def to_s "lat: #{lat}, lon: #{lon}" end