# Class: Rect

## Core.Math. Rect

Represents a utility class used to manipulate rectangle objects.

#### new Rect(x1, y1, x2, y2)

Create a new Rect with the x and y coordinates of the upper-left and lower right points.
##### Parameters:
Name Type Description
`x1` number the x coordinate of the upper-left point
`y1` number the y coordinate of the upper-left point
`x2` number the x coordinate of the lower-right point
`y2` number the y coordinate of the lower-right point
##### Properties:
Name Type Description
`x1` number the x coordinate of the upper-left point
`y1` number the y coordinate of the upper-left point
`x2` number the x coordinate of the lower-right point
`y2` number the y coordinate of the lower-right point
##### Example
```(x1,y1)------|
|         |
|-------(x2,y2)```

### Methods

#### <static> contains(rect, container)

A static method that determines whether the first rect is contains the second rect.
##### Parameters:
Name Type Description
`rect` Core.Math.Rect The first rect (container)
`container` Core.Math.Rect The second rect
##### Returns:
True if the first rect contains the second rect. Otherwise false
Type
boolean

#### <static> createFromDimensions(x, y, width, height)

Creates a Rect using position and dimensions.
##### Parameters:
Name Type Description
`x` number The X coordinate
`y` number The Y coordinate
`width` number The width of the rect
`height` number The height of the rect
##### Returns:
A rect at the designated position of the defined size
Type
Core.Math.Rect

#### <static> intersects(rect1, rect2)

A static method that determines whether the two rects provided intersect each other.
##### Parameters:
Name Type Description
`rect1` Core.Math.Rect The first rect
`rect2` Core.Math.Rect The second rect
##### Returns:
True if the rects intersect. Otherwise, false.
Type
boolean

#### contains(otherRect)

A method to determine whether this rect contains another rect. It is not considered as containment if another rect intersects this one.
##### Parameters:
Name Type Description
`otherRect` Rect The other rect
##### Returns:
True if this rect contains 'otherRect'. Otherwise, false.
Type
boolean

#### exportNormalize()

Normalizes the rect to ensure point (x1, y1) is the bottom left point as expected by xfdf output

#### fitTo(rect)

Best fit this rect into another larger rect
##### Parameters:
Name Type Description
`rect` Core.Math.Rect

#### getBottom()

Returns the most bottom Y value.
Type
number

#### getBottomLeft()

Gets a Point that is at the bottom-left of the rect.
##### Returns:
A point at the bottom-left of the rect
Type
number

#### getBottomRight()

Gets a Point that is at the top-right of the rect.
##### Returns:
A point at the top-right of the rect
Type
number

#### getCenter()

Gets a Point that is at the center of the rect.
##### Returns:
A point at the center of the rect
Type
number

#### getHeight()

Gets the height of the rect
##### Returns:
The height of the rect
Type
number

#### getLeft()

Returns the most left X value.
Type
number

#### getRight()

Returns the most right X value.
Type
number

#### getTop()

Returns the most top Y value.
Type
number

#### getTopLeft()

Gets a Point that is at the top-left of the rect.
##### Returns:
A point at the top-left of the rect
Type
number

#### getTopRight()

Gets a Point that is at the top-right of the rect.
##### Returns:
A point at the top-right of the rect
Type
number

#### getWidth()

Gets the width of the rect
##### Returns:
The width of the rect
Type
number

#### intersect(otherRect)

A method to determine whether this rect overlaps with another. If this rect contains another, this is still considered true.
##### Parameters:
Name Type Description
`otherRect` Rect The other rect
##### Returns:
True if the rects intersect. Otherwise, false.
Type
boolean

#### normalize()

Normalizes the rect to ensure point (x1, y1) is the upper left point and width and height are non-negative.

Returns a Quad that represents this rect.
##### Returns:
A quad that represents this rect
Type

#### transform(transform)

Applies a transformation matrix to the rect which will adjust the points.
##### Parameters:
Name Type Description
`transform` Core.Math.Matrix The transformation matrix to apply

#### translate(x, y)

Translates the rect
##### Parameters:
Name Type Description
`x` number The amount to translate in the x direction
`y` number The amount to translate in the y direction