Tools for working with bounding boxes.
The tables passed into the Area functions are mutated in-place.
local Area = require('stdlib/area/area')
adjust (area, vector) | Adjust an area by shrinking or expanding. |
center (area) | Calculates the center of the area and returns the position. |
compare (area1, area2) | Returns true if two areas are the same. |
construct (x1, y1, x2, y2) | Creates an area from the two positions p1 and p2. |
copy (area) | Creates an area that is a copy of the given area. |
equals (area1, area2) | Compares the size of two areas. |
expand (area, amount) | Expands the size of an area by the given amount. |
inside (area, pos) | Tests if a position {x, y} is located in an area (including the border). |
iterate (area) | Iterates an area. |
less_than (area1, area2) | Is area1 smaller in size than area2 |
new (area_arr, copy) | Converts an area in either array or table format to an area with a metatable. |
normalize (area) | Normalizes the given area. |
offset (area, pos) | Offsets the area by the {x, y} values. |
rotate (area) | Rotate an area such that its value of the width becomes the height, and its value of the height becomes the width. |
round_to_integer (area) | Rounds down the xy-values in area.left_top and rounds up the xy-values in area.right_bottom . |
shrink (area, amount) | Shrinks the area by the given amount. |
size (area) | Gets the properties of the given area. |
spiral_iterate (area) | Iterates the given area in a spiral as depicted below, from innermost to the outermost location. |
tile_center_points (area) | Gets the center positions of the tiles where the given area's two positions reside. |
to_collision_area (entity) | Deprecated see LuaEntity.bounding_box
Converts an entity and its collision_box to the area around it. |
to_selection_area (entity) | Converts an entity and its selection_box to the area around it. |
to_table () | Deprecated |
tostring (area) | Converts an area to a string. |
translate (area, direction, distance) | Translates an area in the given direction. |
Metamethods | Area tables are returned with these Metamethods attached. |
immutable | By default area tables are mutated in place set this to true to make the tables immutable. |
Adjust an area by shrinking or expanding.
Imagine pinching & holding with fingers the top-left & bottom-right corners of a 2D box and pulling outwards to expand and pushing inwards to shrink the box.
Parameters:local area = Area.adjust({{-2, -2}, {2, 2}}, {4, -1})
-- returns {left_top = {x = -6, y = -1}, right_bottom = {x = 6, y = 1}}
Calculates the center of the area and returns the position.
Parameters:
Returns true if two areas are the same.
Parameters:
Creates an area from the two positions p1 and p2.
Parameters:
Creates an area that is a copy of the given area.
Parameters:
Compares the size of two areas.
note: The shame of either area is not taking into consideration, see Area.compare
Parameters:Expands the size of an area by the given amount.
Parameters:
Tests if a position {x, y} is located in an area (including the border).
Parameters:
Iterates an area.
Parameters:
for x,y in Area.iterate({{0, -5}, {3, -3}}) do
...
end
Is area1 smaller in size than area2
Parameters:
Converts an area in either array or table format to an area with a metatable.
Returns itself if it already has a metatable
Parameters:Normalizes the given area.
right_bottom.x
& left_top.x
IF right_bottom.x
< left_top.x
right_bottom.y
& left_top.y
IF right_bottom.y
< left_top.y
Offsets the area by the {x, y}
values.
Parameters:
Rotate an area such that its value of the width becomes the height, and its value of the height becomes the width.
Parameters:
Rounds down the xy-values in area.left_top
and rounds up the xy-values in area.right_bottom
.
Parameters:
local position1 = {x = 1.5, y = 1.5}
local position2 = {x = 1.5, y = 1.5}
local area = {left_top = position1, right_bottom = position2}
Area.round_to_integer(area) --> {left_top = {x = 1, y = 1}, right_bottom = {x = 2, y = 2}}
Shrinks the area by the given amount.
The area shrinks inwards from top-left towards the bottom-right, and from bottom-right towards the top-left.
Parameters:Gets the properties of the given area.
This function returns a total of four values that represent the properties of the given area.
Parameters:Iterates the given area in a spiral as depicted below, from innermost to the outermost location.
Parameters:
for x, y in Area.spiral_iterate({{-2, -1}, {2, 1}}) do
print('(' .. x .. ', ' .. y .. ')')
end
prints: (0, 0) (1, 0) (1, 1) (0, 1) (-1, 1) (-1, 0) (-1, -1) (0, -1) (1, -1) (2, -1) (2, 0) (2, 1) (-2, 1) (-2, 0) (-2, -1)
Gets the center positions of the tiles where the given area's two positions reside.
Parameters:
Deprecated see LuaEntity.bounding_box
Converts an entity and its collision_box to the area around it.
Parameters:
Converts an entity and its selection_box to the area around it.
Parameters:
Deprecated
See also:
Converts an area to a string.
Parameters:
Translates an area in the given direction.
Parameters:
Area tables are returned with these Metamethods attached.
Fields:
By default area tables are mutated in place set this to true to make the tables immutable.