Class: Geometry::CenteredSquare

Inherits:
Square
  • Object
show all
Defined in:
lib/geometry/square.rb

Overview

A Square created with a center point and a size

Accessors collapse

Instance Attribute Summary collapse

Attributes inherited from Square

#closed?, #edges

Accessors collapse

Instance Method Summary collapse

Methods inherited from Square

new, #vertices

Methods included from ClusterFactory

included

Constructor Details

#initialize(center, size) ⇒ CenteredSquare

Returns a new instance of CenteredSquare.

Parameters:

  • center (Point)

    The center point

  • size (Numeric)

    The length of each side



139
140
141
142
# File 'lib/geometry/square.rb', line 139

def initialize(center, size)
    @center = Point[center]
    @size = size
end

Instance Attribute Details

#centerPoint (readonly)

Returns The center of the Square.

Returns:



131
132
133
# File 'lib/geometry/square.rb', line 131

def center
  @center
end

#originPoint (readonly)

Returns The lower left corner.

Returns:

  • (Point)

    The lower left corner



164
165
166
# File 'lib/geometry/square.rb', line 164

def origin
    Point[@center.x - size/2, @center.y - size/2]
end

#pointsArray<Point> (readonly)

Returns The Square‘s four points (counterclockwise).

Returns:

  • (Array<Point>)

    The Square‘s four points (counterclockwise)



170
171
172
173
174
175
176
177
178
# File 'lib/geometry/square.rb', line 170

def points
    half_size = @size/2
    minx = @center.x - half_size
    maxx = @center.x + half_size
    miny = @center.y - half_size
    maxy = @center.y + half_size

    [Point[minx,miny], Point[maxx, miny], Point[maxx, maxy], Point[minx,maxy]]
end

#sizeSize

Returns The Size of the Square.

Returns:



135
136
137
# File 'lib/geometry/square.rb', line 135

def size
  @size
end

Instance Method Details

#heightObject



180
181
182
# File 'lib/geometry/square.rb', line 180

def height
    @size
end

#maxPoint

Returns The upper right corner of the bounding Rectangle.

Returns:



146
147
148
149
# File 'lib/geometry/square.rb', line 146

def max
    half_size = @size/2
    Point[@center.x + half_size, @center.y + half_size]
end

#minPoint

Returns The lower left corner of the bounding Rectangle.

Returns:



152
153
154
155
# File 'lib/geometry/square.rb', line 152

def min
    half_size = @size/2
    Point[@center.x - half_size, @center.y - half_size]
end

#minmaxArray<Point>

Returns The lower left and upper right corners of the bounding Rectangle.

Returns:

  • (Array<Point>)

    The lower left and upper right corners of the bounding Rectangle



158
159
160
# File 'lib/geometry/square.rb', line 158

def minmax
    [self.min, self.max]
end

#widthObject



184
185
186
# File 'lib/geometry/square.rb', line 184

def width
    @size
end