class LatLong::Point
Constants
- ARGUMENT_ERRORS_TEXT
Attributes
lat[R]
long[R]
Public Class Methods
new(lat, long)
click to toggle source
# File lib/lat_long/point.rb, line 14 def initialize(lat, long) @lat = lat @long = long end
Public Instance Methods
move(raw_distance, unit, direction)
click to toggle source
# File lib/lat_long/point.rb, line 23 def move(raw_distance, unit, direction) direction = direction_multipliers(direction) distance = distance_in_meters(raw_distance, unit) lat_offset = distance / EARTH_RADIUS long_offset = distance / ( EARTH_RADIUS * Math.cos(Math::PI * @lat/180) ) new_point_lat = @lat + (lat_offset * 180/Math::PI) * direction[:y_axis] new_point_long = @long + (long_offset * 180/Math::PI) * direction[:x_axis] { lat: new_point_lat, long: new_point_long } end
starting_point()
click to toggle source
# File lib/lat_long/point.rb, line 19 def starting_point [@lat, @long] end
Private Instance Methods
direction_multipliers(direction)
click to toggle source
# File lib/lat_long/point.rb, line 40 def direction_multipliers(direction) DIRECTION_MULTIPLIERS[direction] || raise(ArgumentError, ARGUMENT_ERRORS_TEXT[:direction]) end
distance_in_meters(distance, unit)
click to toggle source
# File lib/lat_long/point.rb, line 45 def distance_in_meters(distance, unit) unit_multiplier = TO_METERS_MULTIPLIERS[unit] || raise(ArgumentError, ARGUMENT_ERRORS_TEXT[:distance_unit]) distance.to_f * unit_multiplier end