class GeoTriangle
Public Class Methods
center(*val)
click to toggle source
# File lib/geo-triangle.rb, line 11 def center(*val) gt = self.new v = [val].flatten gt.set_coordinate(v[0], v[1]) gt.set_coordinate(v[2], v[3]) gt.set_coordinate(v[4], v[5]) gt.center end
Public Instance Methods
center()
click to toggle source
# File lib/geo-triangle.rb, line 51 def center return unless valid_coordinates? gc = GravityCenter.create(*coordinates) lat = gc.center_x.round(6).to_f lon = gc.center_y.round(6).to_f exist?(lat, lon) ? [lat, lon] : nil end
coordinates()
click to toggle source
# File lib/geo-triangle.rb, line 38 def coordinates @coordinates ||= [] @coordinates = @coordinates.uniq @coordinates = @coordinates.take(3) if @coordinates.size > 3 @coordinates end
exist?(lat, lon)
click to toggle source
# File lib/geo-triangle.rb, line 22 def exist?(lat, lon) return false unless lat return false unless lon return false if lat.abs > 90.0 return false if lon.abs > 180.0 true end
set_coordinate(*val)
click to toggle source
# File lib/geo-triangle.rb, line 30 def set_coordinate(*val) v = [val].flatten lat = v[0] lon = v[1] coordinates << [lat, lon] if exist?(lat, lon) self end
valid_coordinates?()
click to toggle source
# File lib/geo-triangle.rb, line 45 def valid_coordinates? return false unless coordinates.size == 3 return false unless coordinates.all?{|c| c.size == 2} true end