Class: Geometry::CenteredRectangle
- Defined in:
- lib/geometry/rectangle.rb
Instance Attribute Summary collapse
-
#center ⇒ Point
The Rectangle‘s center.
- #size ⇒ Size
Attributes inherited from Rectangle
Accessors collapse
-
#edges ⇒ Array<Edge>
The Rectangle‘s four edges.
- #height ⇒ Object
-
#max ⇒ Point
The upper right corner of the bounding Rectangle.
-
#min ⇒ Point
The lower left corner of the bounding Rectangle.
-
#points ⇒ Array<Point>
The Rectangle‘s four points (clockwise).
- #width ⇒ Object
Instance Method Summary collapse
- #eql?(other) ⇒ Boolean (also: #==)
-
#initialize(*args) ⇒ CenteredRectangle
constructor
A new instance of CenteredRectangle.
Methods inherited from Rectangle
#bounds, #inset, #minmax, new, #origin, #path
Methods included from ClusterFactory
Constructor Details
#new(width, height) ⇒ CenteredRectangle #new(size) ⇒ CenteredRectangle #new(center, size) ⇒ CenteredRectangle
Returns a new instance of CenteredRectangle.
236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/geometry/rectangle.rb', line 236 def initialize(*args) , args = args.partition {|a| a.is_a? Hash} = .reduce({}, :merge) @center = [:center] ? Point[[:center]] : PointZero.new if .has_key?(:size) @size = Geometry::Size[[:size]] elsif .has_key?(:height) and .has_key?(:width) @size = Geometry::Size[[:width], [:height]] else raise ArgumentError, "Bad arguments to CenteredRectangle#new" end end |
Instance Attribute Details
Instance Method Details
#edges ⇒ Array<Edge>
Returns The Rectangle‘s four edges.
258 259 260 261 262 263 264 265 266 267 |
# File 'lib/geometry/rectangle.rb', line 258 def edges point0 = @center - @size/2.0 point2 = @center + @size/2.0 point1 = Point[point0.x,point2.y] point3 = Point[point2.x, point0.y] [Edge.new(point0, point1), Edge.new(point1, point2), Edge.new(point2, point3), Edge.new(point3, point0)] end |
#eql?(other) ⇒ Boolean Also known as: ==
251 252 253 |
# File 'lib/geometry/rectangle.rb', line 251 def eql?(other) (self.center == other.center) && (self.size == other.size) end |
#height ⇒ Object
288 289 290 |
# File 'lib/geometry/rectangle.rb', line 288 def height @size.height end |
#max ⇒ Point
Returns The upper right corner of the bounding Rectangle.
270 271 272 |
# File 'lib/geometry/rectangle.rb', line 270 def max @center + @size/2.0 end |
#min ⇒ Point
Returns The lower left corner of the bounding Rectangle.
275 276 277 |
# File 'lib/geometry/rectangle.rb', line 275 def min @center - @size/2.0 end |
#points ⇒ Array<Point>
Returns The Rectangle‘s four points (clockwise).
280 281 282 283 284 285 286 |
# File 'lib/geometry/rectangle.rb', line 280 def points point0 = @center - @size/2.0 point2 = @center + @size/2.0 point1 = Point[point0.x,point2.y] point3 = Point[point2.x, point0.y] [point0, point1, point2, point3] end |
#width ⇒ Object
292 293 294 |
# File 'lib/geometry/rectangle.rb', line 292 def width @size.width end |