Class: GeoTriangle
- Inherits:
-
Object
- Object
- GeoTriangle
- Defined in:
- lib/geo-triangle.rb
Class Method Summary collapse
Instance Method Summary collapse
- #center ⇒ Object
- #coordinates ⇒ Object
- #exist?(lat, lon) ⇒ Boolean
- #set_coordinate(*val) ⇒ Object
- #valid_coordinates? ⇒ Boolean
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
#center ⇒ Object
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 |
#coordinates ⇒ Object
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
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
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 |