Class: Geometry::SizedRectangle
Instance Attribute Summary collapse
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.
312
313
314
315
316
317
318
319
320
321
322
323
324
325
|
# File 'lib/geometry/rectangle.rb', line 312
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
294
295
296
|
# File 'lib/geometry/rectangle.rb', line 294
def origin
@origin
end
|
296
297
298
|
# File 'lib/geometry/rectangle.rb', line 296
def size
@size
end
|
Instance Method Details
334
335
336
|
# File 'lib/geometry/rectangle.rb', line 334
def center
@origin + @size/2
end
|
#edges ⇒ Array<Edge>
339
340
341
342
343
344
345
346
347
348
|
# File 'lib/geometry/rectangle.rb', line 339
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:
==
327
328
329
|
# File 'lib/geometry/rectangle.rb', line 327
def eql?(other)
(self.origin == other.origin) && (self.size == other.size)
end
|
#height ⇒ Object
369
370
371
|
# File 'lib/geometry/rectangle.rb', line 369
def height
@size.height
end
|
351
352
353
|
# File 'lib/geometry/rectangle.rb', line 351
def max
@origin + @size
end
|
356
357
358
|
# File 'lib/geometry/rectangle.rb', line 356
def min
@origin
end
|
#points ⇒ Array<Point>
361
362
363
364
365
366
367
|
# File 'lib/geometry/rectangle.rb', line 361
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
373
374
375
|
# File 'lib/geometry/rectangle.rb', line 373
def width
@size.width
end
|