Class: Geometry::SizedRectangle
Instance Attribute Summary collapse
Attributes inherited from Rectangle
#options
Instance Method Summary
collapse
Methods inherited from Rectangle
#bounds, #inset, #minmax, new
included
Constructor Details
#new(width, height) ⇒ Object
#new(size) ⇒ Object
#new(origin, size) ⇒ Object
Returns a new instance of SizedRectangle.
317
318
319
320
321
322
323
324
325
326
327
328
329
330
|
# File 'lib/geometry/rectangle.rb', line 317
def initialize(*args)
options, args = args.partition {|a| a.is_a? Hash}
options = options.reduce({}, :merge)
@origin = options[:origin] ? Point[options[:origin]] : PointZero.new
if options.has_key?(:size)
@size = Geometry::Size[options[:size]]
elsif options.has_key?(:height) and options.has_key?(:width)
@size = Geometry::Size[options[:width], options[:height]]
else
raise ArgumentError, "Bad arguments to SizeRectangle#new"
end
end
|
Instance Attribute Details
299
300
301
|
# File 'lib/geometry/rectangle.rb', line 299
def origin
@origin
end
|
301
302
303
|
# File 'lib/geometry/rectangle.rb', line 301
def size
@size
end
|
Instance Method Details
339
340
341
|
# File 'lib/geometry/rectangle.rb', line 339
def center
@origin + @size/2
end
|
#edges ⇒ Array<Edge>
344
345
346
347
348
349
350
351
352
353
|
# File 'lib/geometry/rectangle.rb', line 344
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:
==
332
333
334
|
# File 'lib/geometry/rectangle.rb', line 332
def eql?(other)
(self.origin == other.origin) && (self.size == other.size)
end
|
#height ⇒ Object
374
375
376
|
# File 'lib/geometry/rectangle.rb', line 374
def height
@size.height
end
|
356
357
358
|
# File 'lib/geometry/rectangle.rb', line 356
def max
@origin + @size
end
|
361
362
363
|
# File 'lib/geometry/rectangle.rb', line 361
def min
@origin
end
|
#points ⇒ Array<Point>
366
367
368
369
370
371
372
|
# File 'lib/geometry/rectangle.rb', line 366
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
378
379
380
|
# File 'lib/geometry/rectangle.rb', line 378
def width
@size.width
end
|