Class: Euclidean::SizedRectangle
- Defined in:
- lib/euclidean/rectangle.rb
Instance Attribute Summary collapse
-
#origin ⇒ Point
The Rectangle‘s origin.
- #size ⇒ Size
Accessors collapse
-
#center ⇒ Point
The Rectangle‘s center.
-
#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) ⇒ SizedRectangle
constructor
A new instance of SizedRectangle.
Methods inherited from Rectangle
Methods included from ClusterFactory
Constructor Details
#new(width, height) ⇒ Object #new(size) ⇒ Object #new(origin, size) ⇒ Object
Returns a new instance of SizedRectangle.
310 311 312 313 314 315 316 317 318 319 320 321 322 323 |
# File 'lib/euclidean/rectangle.rb', line 310 def initialize(*args) , args = args.partition {|a| a.is_a? Hash} = .reduce({}, :merge) @origin = [:origin] ? Point[[:origin]] : PointZero.new if .has_key?(:size) @size = Euclidean::Size[[:size]] elsif .has_key?(:height) and .has_key?(:width) @size = Euclidean::Size[[:width], [:height]] else raise ArgumentError, "Bad arguments to SizeRectangle#new" end end |
Instance Attribute Details
#origin ⇒ Point
Returns The Rectangle‘s origin.
292 293 294 |
# File 'lib/euclidean/rectangle.rb', line 292 def origin @origin end |
#size ⇒ Size
Returns The Euclidean::Size of the Rectangle.
294 295 296 |
# File 'lib/euclidean/rectangle.rb', line 294 def size @size end |
Instance Method Details
#center ⇒ Point
Returns The Rectangle‘s center.
332 333 334 |
# File 'lib/euclidean/rectangle.rb', line 332 def center @origin + @size/2 end |
#edges ⇒ Array<Edge>
Returns The Rectangle‘s four edges.
337 338 339 340 341 342 343 344 345 346 |
# File 'lib/euclidean/rectangle.rb', line 337 def edges point0 = @origin point2 = @origin + @size 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: ==
325 326 327 |
# File 'lib/euclidean/rectangle.rb', line 325 def eql?(other) (self.origin == other.origin) && (self.size == other.size) end |
#height ⇒ Object
348 349 350 |
# File 'lib/euclidean/rectangle.rb', line 348 def height @size.height end |
#max ⇒ Point
Returns The upper right corner of the bounding Rectangle.
353 354 355 |
# File 'lib/euclidean/rectangle.rb', line 353 def max @origin + @size end |
#min ⇒ Point
Returns The lower left corner of the bounding Rectangle.
358 359 360 |
# File 'lib/euclidean/rectangle.rb', line 358 def min @origin end |
#points ⇒ Array<Point>
Returns The Rectangle‘s four points (clockwise).
363 364 365 366 367 368 369 |
# File 'lib/euclidean/rectangle.rb', line 363 def points point0 = @origin point2 = @origin + @size point1 = Point[point0.x,point2.y] point3 = Point[point2.x, point0.y] [point0, point1, point2, point3] end |
#width ⇒ Object
371 372 373 |
# File 'lib/euclidean/rectangle.rb', line 371 def width @size.width end |