Class: Geometry::CenteredRectangle
Instance Attribute Summary collapse
Attributes inherited from Rectangle
#closed?, #origin
Instance Method Summary
collapse
Methods inherited from Rectangle
#bounds, #inset, #minmax, new
included
Constructor Details
Returns a new instance of CenteredRectangle.
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
219
220
221
|
# File 'lib/geometry/rectangle.rb', line 219
def center
@center
end
|
221
222
223
|
# File 'lib/geometry/rectangle.rb', line 221
def size
@size
end
|
Instance Method Details
#edges ⇒ Array<Edge>
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:
==
251
252
253
|
# File 'lib/geometry/rectangle.rb', line 251
def eql?(other)
(self.center == other.center) && (self.size == other.size)
end
|
#height ⇒ Object
288
289
290
|
# File 'lib/geometry/rectangle.rb', line 288
def height
@size.height
end
|
270
271
272
|
# File 'lib/geometry/rectangle.rb', line 270
def max
@center + @size/2.0
end
|
275
276
277
|
# File 'lib/geometry/rectangle.rb', line 275
def min
@center - @size/2.0
end
|
#points ⇒ Array<Point>
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
|
#width ⇒ Object
292
293
294
|
# File 'lib/geometry/rectangle.rb', line 292
def width
@size.width
end
|