Module: gears.geometry
Helper functions used to compute geometries.
When this module refer to a geometry table, this assume a table with at least an x, y, width and height keys and numeric values.
Info:
- Copyright: 2008 Julien Danjou
-
Originally authored by: Julien Danjou <julien@danjou.info>
(Full contributors list available on our github project)
Static module functions
gears.geometry.rectangle.get_square_distance (geom, x, y) -> number | Get the square distance between a rectangle and a point. | |
gears.geometry.rectangle.get_closest_by_coord (list, x, y) -> () |
Return the closest rectangle from list for a given point.
|
|
gears.geometry.rectangle.get_by_coord (list, x, y) -> () | Return the rectangle containing the [x, y] point. | |
gears.geometry.rectangle.get_in_direction (dir, recttbl, cur) -> () | Get the nearest rectangle in the given direction. | |
gears.geometry.rectangle.are_equal (a, b) -> boolean | Return true if the area are exactly identical. | |
gears.geometry.rectangle.is_inside (a, b) -> boolean |
Return if rectangle a is within rectangle b .
|
|
gears.geometry.rectangle.area_intersect_area (a, b) -> () | Check if an area intersect another area. | |
gears.geometry.rectangle.get_intersection (a, b) -> table | Get the intersect area between a and b. | |
gears.geometry.rectangle.area_remove (areas, elem) -> () | Remove an area from a list, splitting the space between several area that can overlap. |
Static module functions
- gears.geometry.rectangle.get_square_distance (geom, x, y) -> number
-
Get the square distance between a rectangle and a point.
Parameters:
- geom A rectangle
- x number The horizontal coordinate
- y number The vertical coordinate
- width number The rectangle width
- height number The rectangle height
- x number X coordinate of point
- y number Y coordinate of point
Returns:
-
number
The squared distance of the rectangle to the provided point.
- geom A rectangle
- gears.geometry.rectangle.get_closest_by_coord (list, x, y) -> ()
-
Return the closest rectangle from
list
for a given point.Parameters:
- list table A list of geometry tables.
- x number The x coordinate
- y number The y coordinate
Returns:
-
The key from the closest geometry.
- gears.geometry.rectangle.get_by_coord (list, x, y) -> ()
-
Return the rectangle containing the [x, y] point.
Note that if multiple element from the geometry list contains the point, the returned result is nondeterministic.
Parameters:
- list table A list of geometry tables.
- x number The x coordinate
- y number The y coordinate
Returns:
-
The key from the closest geometry. In case no result is found, nil
is returned.
- gears.geometry.rectangle.get_in_direction (dir, recttbl, cur) -> ()
-
Get the nearest rectangle in the given direction. Every rectangle is specified as a table
with x, y, width, height keys, the same as client or screen geometries.
Parameters:
- dir string The direction, can be either up, down, left or right.
- recttbl table A table of rectangle specifications.
- cur table The current rectangle.
Returns:
-
The index for the rectangle in recttbl closer to cur in the given direction. nil if none found.
- gears.geometry.rectangle.are_equal (a, b) -> boolean
-
Return true if the area are exactly identical.
The areas are table with a
x
,y
,width
andheight
keys.Parameters:
Returns:
-
boolean
If the areas are identical.
- gears.geometry.rectangle.is_inside (a, b) -> boolean
-
Return if rectangle
a
is within rectangleb
.This includes the edges. 100% of
a
area has to be withinb
for this function to return true. If you wish to know if any part ofa
intersect withb
, use gears.geometry.rectangle.get_intersection.Parameters:
Returns:
-
boolean
If the areas are identical.
See also:
- gears.geometry.rectangle.area_intersect_area (a, b) -> ()
-
Check if an area intersect another area.
Parameters:
Returns:
-
True if they intersect, false otherwise.
- gears.geometry.rectangle.get_intersection (a, b) -> table
-
Get the intersect area between a and b.
Parameters:
- a The area.
- x number The horizontal coordinate
- y number The vertical coordinate
- width number The rectangle width
- height number The rectangle height
- b The other area.
- x number The horizontal coordinate
- y number The vertical coordinate
- width number The rectangle width
- height number The rectangle height
Returns:
-
table
The intersect area.
See also:
- a The area.
- gears.geometry.rectangle.area_remove (areas, elem) -> ()
-
Remove an area from a list, splitting the space between several area that
can overlap.
Parameters:
- areas table Table of areas.
- elem Area to remove.
- x number The horizontal coordinate
- y number The vertical coordinate
- width number The rectangle width
- height number The rectangle height
Returns:
-
The new area list.