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.

Properties¶

 Vector3 end `Vector3( 0, 0, 0 )` Vector3 position `Vector3( 0, 0, 0 )` Vector3 size `Vector3( 0, 0, 0 )`

Methods¶

 AABB AABB ( Vector3 position, Vector3 size ) AABB abs ( ) bool encloses ( AABB with ) AABB expand ( Vector3 to_point ) float get_area ( ) Vector3 Vector3 get_endpoint ( int idx ) Vector3 int float Vector3 int float Vector3 get_support ( Vector3 dir ) AABB grow ( float by ) bool bool bool has_point ( Vector3 point ) AABB intersection ( AABB with ) bool intersects ( AABB with ) bool intersects_plane ( Plane plane ) bool intersects_segment ( Vector3 from, Vector3 to ) bool is_equal_approx ( AABB aabb ) AABB merge ( AABB with )

Property Descriptions¶

 Default `Vector3( 0, 0, 0 )`

Ending corner. This is calculated as `position + size`. Setting this value will change the size.

 Default `Vector3( 0, 0, 0 )`

Beginning corner. Typically has values lower than end.

 Default `Vector3( 0, 0, 0 )`

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.

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))
```

Returns the volume of the `AABB`.

Returns the center of the `AABB`, which is equal to position + (size / 2).

Gets the position of the 8 endpoints of the `AABB` in space.

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`.

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`.