Class: Geom2D::BoundingBox
- Inherits:
-
Object
- Object
- Geom2D::BoundingBox
- Defined in:
- lib/geom2d/bounding_box.rb
Overview
Represents an axis aligned bounding box.
An empty bounding box contains just the point at origin.
Instance Attribute Summary collapse
-
#max_x ⇒ Object
readonly
The maximum x-coordinate.
-
#max_y ⇒ Object
readonly
The maximum y-coordinate.
-
#min_x ⇒ Object
readonly
The minimum x-coordinate.
-
#min_y ⇒ Object
readonly
The minimum y-coordinate.
Instance Method Summary collapse
-
#add(other) ⇒ Object
(also: #+)
Returns a bounding box containing this bounding box and the argument.
-
#add!(other) ⇒ Object
Updates this bounding box to also contain the given bounding box or point.
-
#height ⇒ Object
Returns the height of the bounding box.
-
#initialize(min_x = 0, min_y = 0, max_x = 0, max_y = 0) ⇒ BoundingBox
constructor
Creates a new BoundingBox.
-
#inspect ⇒ Object
:nodoc:.
-
#to_a ⇒ Object
Returns the bounding box as an array of the form [min_x, min_y, max_x, max_y].
-
#width ⇒ Object
Returns the width of the bounding box.
Constructor Details
#initialize(min_x = 0, min_y = 0, max_x = 0, max_y = 0) ⇒ BoundingBox
Creates a new BoundingBox.
31 32 33 34 35 36 |
# File 'lib/geom2d/bounding_box.rb', line 31 def initialize(min_x = 0, min_y = 0, max_x = 0, max_y = 0) @min_x = min_x @min_y = min_y @max_x = max_x @max_y = max_y end |
Instance Attribute Details
#max_x ⇒ Object (readonly)
The maximum x-coordinate.
25 26 27 |
# File 'lib/geom2d/bounding_box.rb', line 25 def max_x @max_x end |
#max_y ⇒ Object (readonly)
The maximum y-coordinate.
28 29 30 |
# File 'lib/geom2d/bounding_box.rb', line 28 def max_y @max_y end |
#min_x ⇒ Object (readonly)
The minimum x-coordinate.
19 20 21 |
# File 'lib/geom2d/bounding_box.rb', line 19 def min_x @min_x end |
#min_y ⇒ Object (readonly)
The minimum y-coordinate.
22 23 24 |
# File 'lib/geom2d/bounding_box.rb', line 22 def min_y @min_y end |
Instance Method Details
#add(other) ⇒ Object Also known as: +
Returns a bounding box containing this bounding box and the argument.
68 69 70 |
# File 'lib/geom2d/bounding_box.rb', line 68 def add(other) dup.add!(other) end |
#add!(other) ⇒ Object
Updates this bounding box to also contain the given bounding box or point.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/geom2d/bounding_box.rb', line 39 def add!(other) case other when BoundingBox @min_x = [min_x, other.min_x].min @min_y = [min_y, other.min_y].min @max_x = [max_x, other.max_x].max @max_y = [max_y, other.max_y].max when Point @min_x = [min_x, other.x].min @min_y = [min_y, other.y].min @max_x = [max_x, other.x].max @max_y = [max_y, other.y].max else raise ArgumentError, "Can only use another BoundingBox or Point" end self end |
#height ⇒ Object
Returns the height of the bounding box.
63 64 65 |
# File 'lib/geom2d/bounding_box.rb', line 63 def height @max_y - @min_y end |
#inspect ⇒ Object
:nodoc:
78 79 80 |
# File 'lib/geom2d/bounding_box.rb', line 78 def inspect # :nodoc: "BBox[#{min_x}, #{min_y}, #{max_x}, #{max_y}]" end |
#to_a ⇒ Object
Returns the bounding box as an array of the form [min_x, min_y, max_x, max_y].
74 75 76 |
# File 'lib/geom2d/bounding_box.rb', line 74 def to_a [@min_x, @min_y, @max_x, @max_y] end |
#width ⇒ Object
Returns the width of the bounding box.
58 59 60 |
# File 'lib/geom2d/bounding_box.rb', line 58 def width @max_x - @min_x end |