Feedback
• press ENTER to search or ESC to cancel

### Table of content

Globals namespaces

Constants

Classes/objects

Edit page

# Rectangle

If a function receives a rectangle as an argument it could be several things:

1. You can specify the parameters `x, y, width, height` directly as arguments of the function. E.g. `sprite:crop(0, 16, 64, 32)`
2. You can specify an object with `x`, `y`, `width`, and `height` properties. E.g. `sprite:crop{ x=0, y=16, width=64, height=32 }`
3. You can specify an array with 4 elements: E.g. `sprite:crop{ 0, 16, 64, 32 }`
4. You can specify a `Rectangle` instance: E.g. `sprite:crop(Rectangle(0, 16, 64, 32))`

## Rectangle()

``````Rectangle()
Rectangle(otherRectangle)
Rectangle(x, y, width, height)
Rectangle{x=number, y=number, width=number, height=number}
Rectangle{x=number, y=number, w=number, h=number}
Rectangle{number, number, number, number}```
```

## Rectangle.x

``````local x = rectangle.x
rectangle.x = newX```
```

Gets or sets the x-coordinate of the rectangle. 0 means at the left side of the screen/sprite.

## Rectangle.y

``````local y = rectangle.y
rectangle.y = newY```
```

Gets or sets the y-coordinate of the rectangle. 0 means at the top side of the screen/sprite.

## Rectangle.width

``````local width = rectangle.width
rectangle.width = newWidth```
```

Gets or sets the width of the rectangle. If it's 0, the rectangle is empty (so the coordinate doesn't matter).

## Rectangle.height

``````local height = rectangle.height
rectangle.height = newHeight```
```

Gets or sets the height of the rectangle. If it's 0, the rectangle is empty (so the coordinate doesn't matter).

## Rectangle.w

Same as Rectangle.width.

## Rectangle.h

Same as Rectangle.height.

## Rectangle.origin

``````local point = rectangle.origin
rectangle.origin = newPoint```
```

Gets or sets the origin of the rectangle with a Point object, just like changing Rectangle.x and Rectangle.y at the same time.

## Rectangle.size

``````local size = rectangle.size
rectangle.size = newSize```
```

Gets or sets the size of the rectangle with a Size object, just like changing Rectangle.width and Rectangle.height at the same time.

## Rectangle.isEmpty

````local booleanResult = rectangle.isEmpty`
```

Returns true if the rectangle is empty i.e. width and/or height are 0.

## Rectangle:contains()

````local booleanResult = rectangle:contains(otherRectangle)`
```

Returns true if `otherRectangle` is inside `rectangle`.

Example:

``````local bounds = Rectangle{ x=0, y=0, width=32, height=32 }
local rectInside = Rectangle{ x=4, y=4, width=8, height=8 }
if bounds:contains(rectInside) then ... end```
```

## Rectangle:intersects()

````local booleanResult = rectangle:intersects(otherRectangle)`
```

Returns true if `rectangle` intersects in some way `otherRectangle`.

## Rectangle:intersect()

````local newRectangle = rectangle:intersect(otherRectangle)`
```

Returns the new rectangle `newRectangle` which is the intersection of `rectangle` and `otherRectangle`. If both rectangles don't intersect each other, the result will be an empty rectangle

## Rectangle:union()

````local newRectangle = rectangle:union(otherRectangle)`
```

Returns the new rectangle `newRectangle` which will be a rectangle big enough to contains both given rectangles `rectangle` and `otherRectangle`.