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