Class: Geometry::CenteredRectangle

Inherits:
Rectangle
  • Object
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, #origin, #path

Methods included from ClusterFactory

included

Constructor Details

#new(width, height) ⇒ CenteredRectangle #new(size) ⇒ CenteredRectangle #new(center, size) ⇒ CenteredRectangle

Returns a new instance of CenteredRectangle.

Overloads:



236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/geometry/rectangle.rb', line 236

def initialize(*args)
    options, args = args.partition {|a| a.is_a? Hash}
    options = options.reduce({}, :merge)

    @center = options[:center] ? Point[options[:center]] : 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 CenteredRectangle#new"
    end
end

Instance Attribute Details

#centerPoint

Returns The Rectangle‘s center.

Returns:



219
220
221
# File 'lib/geometry/rectangle.rb', line 219

def center
  @center
end

#sizeSize

Returns The Size of the Rectangle.

Returns:



221
222
223
# File 'lib/geometry/rectangle.rb', line 221

def size
  @size
end

Instance Method Details

#edgesArray<Edge>

Returns The Rectangle‘s four edges.

Returns:



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

Returns:

  • (Boolean)


251
252
253
# File 'lib/geometry/rectangle.rb', line 251

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

#heightObject



288
289
290
# File 'lib/geometry/rectangle.rb', line 288

def height
    @size.height
end

#maxPoint

Returns The upper right corner of the bounding Rectangle.

Returns:



270
271
272
# File 'lib/geometry/rectangle.rb', line 270

def max
    @center + @size/2.0
end

#minPoint

Returns The lower left corner of the bounding Rectangle.

Returns:



275
276
277
# File 'lib/geometry/rectangle.rb', line 275

def min
    @center - @size/2.0
end

#pointsArray<Point>

Returns The Rectangle‘s four points (clockwise).

Returns:



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

#widthObject



292
293
294
# File 'lib/geometry/rectangle.rb', line 292

def width
    @size.width
end