Class: Is::Area

Inherits:
Object
  • Object
show all
Defined in:
lib/is/area.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(points) ⇒ Area

Returns a new instance of Area.



6
7
8
# File 'lib/is/area.rb', line 6

def initialize(points)
  @area = points.map { |it| Is::Point.new *it }
end

Instance Attribute Details

#areaObject (readonly)

Returns the value of attribute area.



4
5
6
# File 'lib/is/area.rb', line 4

def area
  @area
end

Instance Method Details

#contains?(point) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/is/area.rb', line 10

def contains?(point)
  point = Is::Point.new(*point) unless point.is_a?(Is::Point)
  return false if outside_box? point

  contains_point = false
  area_size = area.size
  i = -1
  j = area_size - 1

  while (i += 1) < area_size
    vertex1, vertex2 = area.values_at i, j
    if conditions_passed?(point, vertex1, vertex2)
      contains_point = !contains_point
    end
    j = i
  end

  contains_point
end