Class: Geometry::SizedRectangle

Inherits:
Rectangle show all
Defined in:
lib/geometry/rectangle.rb

Instance Attribute Summary collapse

Attributes inherited from Rectangle

#closed?

Accessors collapse

Instance Method Summary collapse

Methods inherited from Rectangle

#bounds, #inset, #minmax, new

Methods included from ClusterFactory

included

Constructor Details

#new(width, height) ⇒ Object #new(size) ⇒ Object #new(origin, size) ⇒ Object

Returns a new instance of SizedRectangle.

Overloads:

  • #new(width, height) ⇒ Object

    Creates a Rectangle of the given width and height with its origin at [0,0]

  • #new(size) ⇒ Object

    Creates a Rectangle of the given Geometry::Size with its origin at [0,0]

  • #new(origin, size) ⇒ Object

    Creates a Rectangle with the given origin point and size



318
319
320
321
322
323
324
325
326
327
328
329
330
331
# File 'lib/geometry/rectangle.rb', line 318

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

#originPoint



300
301
302
# File 'lib/geometry/rectangle.rb', line 300

def origin
  @origin
end

#sizeSize



302
303
304
# File 'lib/geometry/rectangle.rb', line 302

def size
  @size
end

Instance Method Details

#centerPoint



340
341
342
# File 'lib/geometry/rectangle.rb', line 340

def center
    @origin + @size/2
end

#edgesArray<Edge>



345
346
347
348
349
350
351
352
353
354
# File 'lib/geometry/rectangle.rb', line 345

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: ==



333
334
335
# File 'lib/geometry/rectangle.rb', line 333

def eql?(other)
    (self.origin == other.origin) && (self.size == other.size)
end

#heightObject



375
376
377
# File 'lib/geometry/rectangle.rb', line 375

def height
    @size.height
end

#maxPoint



357
358
359
# File 'lib/geometry/rectangle.rb', line 357

def max
    @origin + @size
end

#minPoint



362
363
364
# File 'lib/geometry/rectangle.rb', line 362

def min
    @origin
end

#pointsArray<Point>



367
368
369
370
371
372
373
# File 'lib/geometry/rectangle.rb', line 367

def points
    point0 = @origin
    point2 = @origin + @size
    point1 = Point[point0.x,point2.y]
    point3 = Point[point2.x, point0.y]
    [point0, point1, point2, point3]
end

#widthObject



379
380
381
# File 'lib/geometry/rectangle.rb', line 379

def width
    @size.width
end