Class: GeoTriangle

Inherits:
Object
  • Object
show all
Defined in:
lib/geo-triangle.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.center(*val) ⇒ Object



11
12
13
14
15
16
17
18
# 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

Instance Method Details

#centerObject



51
52
53
54
55
56
57
# 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

#coordinatesObject



38
39
40
41
42
43
# 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) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
# 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) ⇒ Object



30
31
32
33
34
35
36
# 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?Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# 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