AABB
Axis-Aligned Bounding Box.
Description
AABB
consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
It uses floating-point coordinates. The 2D counterpart to AABB
is Rect2.
Note: Unlike Rect2, AABB
does not have a variant that uses integer coordinates.
Tutorials
Properties
| ||
| ||
|
Methods
abs ( ) | |
get_area ( ) | |
get_endpoint ( int idx ) | |
get_longest_axis ( ) | |
get_support ( Vector3 dir ) | |
has_no_area ( ) | |
has_no_surface ( ) | |
intersection ( AABB with ) | |
intersects ( AABB with ) | |
intersects_plane ( Plane plane ) | |
intersects_segment ( Vector3 from, Vector3 to ) | |
is_equal_approx ( AABB aabb ) | |
Property Descriptions
- Vector3 end
Default |
|
Ending corner. This is calculated as position + size
. Setting this value will change the size.
- Vector3 position
Default |
|
Beginning corner. Typically has values lower than end.
- Vector3 size
Default |
|
Size from position to end. Typically, all components are positive.
If the size is negative, you can use abs to fix it.
Method Descriptions
Constructs an AABB
from a position and size.
- AABB abs ( )
Returns an AABB with equivalent position and size, modified so that the most-negative corner is the origin and the size is positive.
Returns true
if this AABB
completely encloses another one.
Returns a copy of this AABB
expanded to include a given point.
Example:
# position (-3, 2, 0), size (1, 1, 1)
var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))
# position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB and Vector3(0, -1, 2)
var box2 = box.expand(Vector3(0, -1, 2))
- float get_area ( )
Returns the volume of the AABB
.
Gets the position of the 8 endpoints of the AABB
in space.
- Vector3 get_longest_axis ( )
Returns the normalized longest axis of the AABB
.
- int get_longest_axis_index ( )
Returns the index of the longest axis of the AABB
(according to Vector3‘s AXIS_*
constants).
- float get_longest_axis_size ( )
Returns the scalar length of the longest axis of the AABB
.
- Vector3 get_shortest_axis ( )
Returns the normalized shortest axis of the AABB
.
- int get_shortest_axis_index ( )
Returns the index of the shortest axis of the AABB
(according to Vector3::AXIS* enum).
- float get_shortest_axis_size ( )
Returns the scalar length of the shortest axis of the AABB
.
Returns the support point in a given direction. This is useful for collision detection algorithms.
Returns a copy of the AABB
grown a given amount of units towards all the sides.
- bool has_no_area ( )
Returns true
if the AABB
is flat or empty.
- bool has_no_surface ( )
Returns true
if the AABB
is empty.
Returns true
if the AABB
contains a point.
Returns the intersection between two AABB
. An empty AABB (size 0,0,0) is returned on failure.
Returns true
if the AABB
overlaps with another.
Returns true
if the AABB
is on both sides of a plane.
Returns true
if the AABB
intersects the line segment between from
and to
.
Returns true
if this AABB
and aabb
are approximately equal, by calling @GDScript.is_equal_approx on each component.
Returns a larger AABB
that contains both this AABB
and with
.