Loading...
Searching...
No Matches
irr::core::aabbox3d< T > Class Template Reference

Axis aligned bounding box in 3d dimensional space. More...

`#include <aabbox3d.h>`

## Public Member Functions

| aabbox3d ()
| Default Constructor.
| aabbox3d (const vector3d< T > &init)
| Constructor with only one point.
| aabbox3d (const vector3d< T > &min, const vector3d< T > &max)
| Constructor with min edge and max edge.
| aabbox3d (T minx, T miny, T minz, T maxx, T maxy, T maxz)
| Constructor with min edge and max edge as single values, not vectors.
void | addInternalBox (const aabbox3d< T > &b)
| Adds another bounding box.
void | addInternalPoint (const vector3d< T > &p)
| Adds a point to the bounding box.
void | addInternalPoint (T x, T y, T z)
| Adds a point to the bounding box.
EIntersectionRelation3D | classifyPlaneRelation (const plane3d< T > &plane) const
| Classifies a relation with a plane.
T | getArea () const
| Get the surface area of the box in squared units.
vector3d< T > | getCenter () const
| Get center of the bounding box.
void | getEdges (vector3d< T > *edges) const
| Stores all 8 edges of the box into an array.
vector3d< T > | getExtent () const
| Get extent of the box (maximal distance of two points in the box).
aabbox3d< T > | getInterpolated (const aabbox3d< T > &other, f32 d) const
| Calculates a new interpolated bounding box.
T | getVolume () const
| Get the volume enclosed by the box in cubed units.
bool | intersectsWithBox (const aabbox3d< T > &other) const
| Determines if the axis-aligned box intersects with another axis-aligned box.
bool | intersectsWithLine (const line3d< T > &line) const
| Tests if the box intersects with a line.
bool | intersectsWithLine (const vector3d< T > &linemiddle, const vector3d< T > &linevect, T halflength) const
| Tests if the box intersects with a line.
bool | isEmpty () const
| Check if the box is empty.
bool | isFullInside (const aabbox3d< T > &other) const
| Check if this box is completely inside the 'other' box.
bool | isPointInside (const vector3d< T > &p) const
| Determines if a point is within this box.
bool | isPointTotalInside (const vector3d< T > &p) const
| Determines if a point is within this box and not its borders.
bool | operator!= (const aabbox3d< T > &other) const
| Inequality operator.
bool | operator== (const aabbox3d< T > &other) const
| Equality operator.
void | repair ()
| Repairs the box.
void | reset (const aabbox3d< T > &initValue)
| Resets the bounding box.
void | reset (const vector3d< T > &initValue)
| Resets the bounding box to a one-point box.
void | reset (T x, T y, T z)
| Resets the bounding box to a one-point box.

## Public Attributes

vector3d< T > | MaxEdge
| The far edge.
vector3d< T > | MinEdge
| The near edge.

## Detailed Description

template<class T>
class irr::core::aabbox3d< T >

Axis aligned bounding box in 3d dimensional space.

Has some useful methods used with occlusion culling or clipping.

Definition at line 21 of file aabbox3d.h.

## Constructor & Destructor Documentation

## aabbox3d() [1/4]

template<class T>

irr::core::aabbox3d< T >::aabbox3d | ( |  | ) |

inline

Default Constructor.

Definition at line 26 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::getInterpolated().

## aabbox3d() [2/4]

template<class T>

irr::core::aabbox3d< T >::aabbox3d | ( | const vector3d< T > & | min,
|  | const vector3d< T > & | max )

inline

Constructor with min edge and max edge.

Definition at line 28 of file aabbox3d.h.

## aabbox3d() [3/4]

template<class T>

irr::core::aabbox3d< T >::aabbox3d | ( | const vector3d< T > & | init | ) |

inline

Constructor with only one point.

Definition at line 30 of file aabbox3d.h.

## aabbox3d() [4/4]

template<class T>

irr::core::aabbox3d< T >::aabbox3d | ( | T | minx,
|  | T | miny,
|  | T | minz,
|  | T | maxx,
|  | T | maxy,
|  | T | maxz )

inline

Constructor with min edge and max edge as single values, not vectors.

Definition at line 32 of file aabbox3d.h.

## Member Function Documentation

## addInternalBox()

template<class T>

void irr::core::aabbox3d< T >::addInternalBox | ( | const aabbox3d< T > & | b | ) |

inline

Adds another bounding box.

The box grows bigger, if the new box was outside of the box.

Parameters

  b | Other bounding box to add into this box.

Definition at line 82 of file aabbox3d.h.

Referenced by irr::scene::IMeshManipulator::apply().

## addInternalPoint() [1/2]

template<class T>

void irr::core::aabbox3d< T >::addInternalPoint | ( | const vector3d< T > & | p | ) |

inline

Adds a point to the bounding box.

The box grows bigger, if point was outside of the box.

Parameters

  p | Point to add into the box.

Definition at line 74 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::addInternalBox(), irr::core::aabbox3d< f32 >::addInternalPoint(), and irr::scene::IMeshManipulator::apply_().

## addInternalPoint() [2/2]

template<class T>

void irr::core::aabbox3d< T >::addInternalPoint | ( | T | x,
|  | T | y,
|  | T | z )

inline

Adds a point to the bounding box.

The box grows bigger, if point is outside of the box.

Parameters

  x | X coordinate of the point to add to this box.
  y | Y coordinate of the point to add to this box.
  z | Z coordinate of the point to add to this box.

Definition at line 93 of file aabbox3d.h.

## classifyPlaneRelation()

template<class T>

EIntersectionRelation3D irr::core::aabbox3d< T >::classifyPlaneRelation | ( | const plane3d< T > & | plane | ) | const

inline

Classifies a relation with a plane.

Parameters

  plane | Plane to classify relation to.

Returns
  Returns ISREL3D_FRONT if the box is in front of the plane, ISREL3D_BACK if the box is behind the plane, and ISREL3D_CLIPPED if it is on both sides of the plane.

Definition at line 284 of file aabbox3d.h.

## getArea()

template<class T>

T irr::core::aabbox3d< T >::getArea | ( |  | ) | const

inline

Get the surface area of the box in squared units.

Definition at line 134 of file aabbox3d.h.

## getCenter()

template<class T>

vector3d< T > irr::core::aabbox3d< T >::getCenter | ( |  | ) | const

inline

Get center of the bounding box.

Returns
  Center of the bounding box.

Definition at line 106 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::getEdges(), and irr::core::aabbox3d< f32 >::intersectsWithLine().

## getEdges()

template<class T>

void irr::core::aabbox3d< T >::getEdges | ( | vector3d< T > * | edges | ) | const

inline

Stores all 8 edges of the box into an array.

Parameters

  edges | Pointer to array of 8 edges.

Definition at line 142 of file aabbox3d.h.

## getExtent()

template<class T>

vector3d< T > irr::core::aabbox3d< T >::getExtent | ( |  | ) | const

inline

Get extent of the box (maximal distance of two points in the box).

Returns
  Extent of the bounding box.

Definition at line 113 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::getArea(), irr::core::aabbox3d< f32 >::getVolume(), and irr::core::aabbox3d< f32 >::intersectsWithLine().

## getInterpolated()

template<class T>

aabbox3d< T > irr::core::aabbox3d< T >::getInterpolated | ( | const aabbox3d< T > & | other,
|  | f32 | d ) const

inline

Calculates a new interpolated bounding box.

d=0 returns other, d=1 returns this, all other values blend between the two boxes.

Parameters

  other | Other box to interpolate between
  d | Value between 0.0f and 1.0f.

Returns
  Interpolated box.

Definition at line 190 of file aabbox3d.h.

## getVolume()

template<class T>

T irr::core::aabbox3d< T >::getVolume | ( |  | ) | const

inline

Get the volume enclosed by the box in cubed units.

Definition at line 127 of file aabbox3d.h.

## intersectsWithBox()

template<class T>

bool irr::core::aabbox3d< T >::intersectsWithBox | ( | const aabbox3d< T > & | other | ) | const

inline

Determines if the axis-aligned box intersects with another axis-aligned box.

Parameters

  other | Other box to check a intersection with.

Returns
  True if there is an intersection with the other box, otherwise false.

Definition at line 233 of file aabbox3d.h.

## intersectsWithLine() [1/2]

template<class T>

bool irr::core::aabbox3d< T >::intersectsWithLine | ( | const line3d< T > & | line | ) | const

inline

Tests if the box intersects with a line.

Parameters

  line | Line to test intersection with.

Returns
  True if there is an intersection , else false.

Definition at line 242 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::intersectsWithLine().

## intersectsWithLine() [2/2]

template<class T>

bool irr::core::aabbox3d< T >::intersectsWithLine | ( | const vector3d< T > & | linemiddle,
|  | const vector3d< T > & | linevect,
|  | T | halflength ) const

inline

Tests if the box intersects with a line.

Parameters

  linemiddle | Center of the line.
  linevect | Vector of the line.
  halflength | Half length of the line.

Returns
  True if there is an intersection, else false.

Definition at line 253 of file aabbox3d.h.

## isEmpty()

template<class T>

bool irr::core::aabbox3d< T >::isEmpty | ( |  | ) | const

inline

Check if the box is empty.

This means that there is no space between the min and max edge.

Returns
  True if box is empty, else false.

Definition at line 121 of file aabbox3d.h.

## isFullInside()

template<class T>

bool irr::core::aabbox3d< T >::isFullInside | ( | const aabbox3d< T > & | other | ) | const

inline

Check if this box is completely inside the 'other' box.

Parameters

  other | Other box to check against.

Returns
  True if this box is completly inside the other box, otherwise false.

Definition at line 223 of file aabbox3d.h.

## isPointInside()

template<class T>

bool irr::core::aabbox3d< T >::isPointInside | ( | const vector3d< T > & | p | ) | const

inline

Determines if a point is within this box.

Border is included (IS part of the box)!

Parameters

  p | Point to check.

Returns
  True if the point is within the box and false if not

Definition at line 201 of file aabbox3d.h.

Referenced by irr::core::triangle3d< f32 >::isTotalInsideBox().

## isPointTotalInside()

template<class T>

bool irr::core::aabbox3d< T >::isPointTotalInside | ( | const vector3d< T > & | p | ) | const

inline

Determines if a point is within this box and not its borders.

Border is excluded (NOT part of the box)!

Parameters

  p | Point to check.

Returns
  True if the point is within the box and false if not.

Definition at line 212 of file aabbox3d.h.

## operator!=()

template<class T>

bool irr::core::aabbox3d< T >::operator!= | ( | const aabbox3d< T > & | other | ) | const

inline

Inequality operator.

Parameters

  other | box to compare with.

Returns
  True if both boxes are different, else false.

Definition at line 42 of file aabbox3d.h.

## operator==()

template<class T>

bool irr::core::aabbox3d< T >::operator== | ( | const aabbox3d< T > & | other | ) | const

inline

Equality operator.

Parameters

  other | box to compare with.

Returns
  True if both boxes are equal, else false.

Definition at line 38 of file aabbox3d.h.

## repair()

template<class T>

void irr::core::aabbox3d< T >::repair | ( |  | ) |

inline

Repairs the box.

Necessary if for example MinEdge and MaxEdge are swapped.

Definition at line 172 of file aabbox3d.h.

Referenced by irr::core::CMatrix4< T >::transformBox().

## reset() [1/3]

template<class T>

void irr::core::aabbox3d< T >::reset | ( | const aabbox3d< T > & | initValue | ) |

inline

Resets the bounding box.

Parameters

  initValue | New box to set this one to.

Definition at line 58 of file aabbox3d.h.

## reset() [2/3]

template<class T>

void irr::core::aabbox3d< T >::reset | ( | const vector3d< T > & | initValue | ) |

inline

Resets the bounding box to a one-point box.

Parameters

  initValue | New point.

Definition at line 65 of file aabbox3d.h.

## reset() [3/3]

template<class T>

void irr::core::aabbox3d< T >::reset | ( | T | x,
|  | T | y,
|  | T | z )

inline

Resets the bounding box to a one-point box.

Parameters

  x | X coord of the point.
  y | Y coord of the point.
  z | Z coord of the point.

Definition at line 50 of file aabbox3d.h.

Referenced by irr::scene::IMeshManipulator::apply(), and irr::scene::IMeshManipulator::apply_().

## Member Data Documentation

## MaxEdge

template<class T>

vector3d<T> irr::core::aabbox3d< T >::MaxEdge

The far edge.

Definition at line 320 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::addInternalBox(), irr::core::aabbox3d< f32 >::getInterpolated(), irr::core::aabbox3d< f32 >::intersectsWithBox(), irr::core::aabbox3d< f32 >::isFullInside(), irr::core::triangle3d< f32 >::isTotalOutsideBox(), irr::core::aabbox3d< f32 >::operator!=(), irr::core::aabbox3d< f32 >::operator==(), irr::core::CMatrix4< T >::transformBox(), and irr::core::CMatrix4< T >::transformBoxEx().

## MinEdge

template<class T>

vector3d<T> irr::core::aabbox3d< T >::MinEdge

The near edge.

Definition at line 317 of file aabbox3d.h.

Referenced by irr::core::aabbox3d< f32 >::addInternalBox(), irr::core::aabbox3d< f32 >::getInterpolated(), irr::core::aabbox3d< f32 >::intersectsWithBox(), irr::core::aabbox3d< f32 >::isFullInside(), irr::core::triangle3d< f32 >::isTotalOutsideBox(), irr::core::aabbox3d< f32 >::operator!=(), irr::core::aabbox3d< f32 >::operator==(), irr::core::CMatrix4< T >::transformBox(), and irr::core::CMatrix4< T >::transformBoxEx().

The documentation for this class was generated from the following file:

- aabbox3d.h

- Irrlicht Engine Documentation © 2003-2012 by Nikolaus Gebhardt. Generated on for Irrlicht 3D Engine by Doxygen 1.15.0