Box3F

Engine/source/math/mBox.h

Axis-aligned bounding box (AABB).

More...

Public Attributes

```Point3F
```
```maxExtents
```

Maximum extents of box.

```Point3F
```
```minExtents
```

Minimum extents of box.

Public Static Attributes

```const Box3F
```
```Invalid
```

An inverted bounds where the minimum point is positive and the maximum point is negative.

```const Box3F
```
```Max
```

A box that covers the entire floating point range.

```const Box3F
```
```Zero
```

A null box of zero size.

Public Functions

```Box3F()
```
```Box3F(const F32 & xMin, const F32 & yMin, const F32 & zMin, const F32 & xMax, const F32 & yMax, const F32 & zMax)
```

Create a box from six extent values.

```Box3F(const Point3F & in_rMin, const Point3F & in_rMax, const bool in_overrideCheck)
```

Create a box from two points.

```Box3F(F32 cubeSize)
```
```bool
```
```collideLine(const Point3F & start, const Point3F & end)
```

Collide a line against the box.

```bool
```
```collideLine(const Point3F & start, const Point3F & end, F32 * t, Point3F * n)
```

Collide a line against the box.

```bool
```
```collideOrientedBox(const Point3F & radii, const MatrixF & toUs)
```

Collide an oriented box against the box.

```Point3F
```
```computeVertex(U32 corner)
```

Return one of the corner vertices of the box.

```void
```
```extend(const Point3F & p)
```

Extend the box to include point.

```SphereF
```
```getBoundingSphere()
```

Return the bounding sphere that contains this AABB.

```Point3F
```
```getCenter()
```
```void
```
```getCenter(Point3F * center)
```

Get the center of this box.

```Point3F
```
```getClosestPoint(const Point3F & refPt)
```

Return the closest point of the box, relative to the passed point.

```F32
```
```getDistanceToPoint(const Point3F & refPt)
```

Return distance of closest point on box to refPt.

```Point3F
```
```getExtents()
```

Returns the max minus the min extents.

```F32
```
```getGreatestDiagonalLength()
```

Get the length of the longest diagonal in the box.

```Box3F
```
```getOverlap(const Box3F & otherBox)
```

Return the overlap between this box and otherBox.

```F32
```
```getSqDistanceToPoint(const Point3F & refPt)
```

Return the squared distance to closest point on box to refPt.

```F32
```
```getVolume()
```

Return the volume of the box.

```void
```
```intersect(const Box3F & in_rIntersect)
```

Perform an intersection operation with another box and store the results in this box.

```void
```
```intersect(const Point3F & in_rIntersect)
```
```bool
```
```isContained(const Box3F & in_rContained)
```

Check to see if another box is contained in this box.

```bool
```
```isContained(const Point2F & pt)
```

Check if the Point2F is within the box xy extents.

```bool
```
```isContained(const Point3F & in_rContained)
```

Check to see if a point is contained in this box.

```bool
```
```isEmpty()
```

Returns true if any of the extent axes are less than or equal to zero.

```bool
```
```isOverlapped(const Box3F & in_rOverlap)
```

Check to see if another box overlaps this box.

```bool
```
```isOverlapped(const SphereF & sphere)
```

Check if the given sphere overlaps with the box.

```bool
```
```isValidBox()
```

Check that the min extents of the box is less than or equal to the max extents.

```F32
```
```len()
```

Returns the diagonal box length.

```F32
```
```len(S32 axis)
```

Returns the length of extent by axis index.

```F32
```
```len_max()
```

Returns the maximum box extent.

```F32
```
```len_min()
```

Returns the minimum box extent.

```F32
```
```len_x()
```

Returns the length of the x extent.

```F32
```
```len_y()
```

Returns the length of the y extent.

```F32
```
```len_z()
```

Returns the length of the z extent.

```bool
```
```operator!=(const Box3F & b)
```

Inequality operator.

```bool
```
```operator==(const Box3F & b)
```

Equality operator.

```void
```
```scale(const Point3F & amt)
```

Scale the box by a Point3F or F32.

```void
```
```scale(F32 amt)
```
```void
```
```set(const F32 & xMin, const F32 & yMin, const F32 & zMin, const F32 & xMax, const F32 & yMax, const F32 & zMax)
```
```void
```
```set(const Point3F & in_Length)
```

Create box around origin given lengths.

```void
```
```set(const Point3F & in_rMin, const Point3F & in_rMax)
```
```void
```
```setCenter(const Point3F & center)
```

Recenter the box.

Public Static Functions

```Box3F
```
```aroundPoints(const Point3F * points, U32 numPoints)
```

Create an AABB that fits around the given point cloud, i.e.

Detailed Description

Axis-aligned bounding box (AABB).

A helper class for working with boxes. It runs at F32 precision.

see:

Public Attributes

```Point3F maxExtents
```

Maximum extents of box.

```Point3F minExtents
```

Minimum extents of box.

Public Static Attributes

```const Box3F Invalid
```

An inverted bounds where the minimum point is positive and the maximum point is negative.

Should be used with extend() to construct a minimum volume box.

see:

```const Box3F Max
```

A box that covers the entire floating point range.

```const Box3F Zero
```

A null box of zero size.

Public Functions

```Box3F()
```

```Box3F(const F32 & xMin, const F32 & yMin, const F32 & zMin, const F32 & xMax, const F32 & yMax, const F32 & zMax)
```

Create a box from six extent values.

No checking is performed as to the validity of these extents, unlike the other constructor.

```Box3F(const Point3F & in_rMin, const Point3F & in_rMax, const bool in_overrideCheck)
```

Create a box from two points.

Normally, this function will compensate for mismatched min/max values. If you know your values are valid, you can set in_overrideCheck to true and skip this.

Parameters:

 in_rMin Minimum extents of box. in_rMax Maximum extents of box. in_overrideCheck Pass true to skip check of extents.

```Box3F(F32 cubeSize)
```

```collideLine(const Point3F & start, const Point3F & end)
```

Collide a line against the box.

Returns true on collision.

```collideLine(const Point3F & start, const Point3F & end, F32 * t, Point3F * n)
```

Collide a line against the box.

Parameters:

 start Start of line. end End of line. t Value from 0.0-1.0, indicating position along line of collision. n Normal of collision.

```collideOrientedBox(const Point3F & radii, const MatrixF & toUs)
```

Collide an oriented box against the box.

Returns true if "oriented" box collides with us. Assumes incoming box is centered at origin of source space.

Parameters:

 radii The dimension of incoming box (half x,y,z length). toUs A transform that takes incoming box into our space.

```computeVertex(U32 corner)
```

Return one of the corner vertices of the box.

```extend(const Point3F & p)
```

Extend the box to include point.

```getBoundingSphere()
```

Return the bounding sphere that contains this AABB.

```getCenter()
```

```getCenter(Point3F * center)
```

Get the center of this box.

This is the average of min and max.

```getClosestPoint(const Point3F & refPt)
```

Return the closest point of the box, relative to the passed point.

```getDistanceToPoint(const Point3F & refPt)
```

Return distance of closest point on box to refPt.

```getExtents()
```

Returns the max minus the min extents.

```getGreatestDiagonalLength()
```

Get the length of the longest diagonal in the box.

```getOverlap(const Box3F & otherBox)
```

Return the overlap between this box and otherBox.

```getSqDistanceToPoint(const Point3F & refPt)
```

Return the squared distance to closest point on box to refPt.

```getVolume()
```

Return the volume of the box.

```intersect(const Box3F & in_rIntersect)
```

Perform an intersection operation with another box and store the results in this box.

```intersect(const Point3F & in_rIntersect)
```

```isContained(const Box3F & in_rContained)
```

Check to see if another box is contained in this box.

```isContained(const Point2F & pt)
```

Check if the Point2F is within the box xy extents.

```isContained(const Point3F & in_rContained)
```

Check to see if a point is contained in this box.

```isEmpty()
```

Returns true if any of the extent axes are less than or equal to zero.

```isOverlapped(const Box3F & in_rOverlap)
```

Check to see if another box overlaps this box.

```isOverlapped(const SphereF & sphere)
```

Check if the given sphere overlaps with the box.

```isValidBox()
```

Check that the min extents of the box is less than or equal to the max extents.

```len()
```

Returns the diagonal box length.

```len(S32 axis)
```

Returns the length of extent by axis index.

Parameters:

 axis The axis index of 0, 1, or 2.

```len_max()
```

Returns the maximum box extent.

```len_min()
```

Returns the minimum box extent.

```len_x()
```

Returns the length of the x extent.

```len_y()
```

Returns the length of the y extent.

```len_z()
```

Returns the length of the z extent.

```operator!=(const Box3F & b)
```

Inequality operator.

```operator==(const Box3F & b)
```

Equality operator.

```scale(const Point3F & amt)
```

Scale the box by a Point3F or F32.

```scale(F32 amt)
```

```set(const F32 & xMin, const F32 & yMin, const F32 & zMin, const F32 & xMax, const F32 & yMax, const F32 & zMax)
```

```set(const Point3F & in_Length)
```

Create box around origin given lengths.

```set(const Point3F & in_rMin, const Point3F & in_rMax)
```

```setCenter(const Point3F & center)
```

Recenter the box.

Public Static Functions

```aroundPoints(const Point3F * points, U32 numPoints)
```

Create an AABB that fits around the given point cloud, i.e.

find the minimum and maximum extents of the given point set.