MDL SDK API nvidia_logo_transpbg.gif Up
mi::math::Bbox<T, DIM> Class Template Reference

Axis-aligned N-dimensional bounding box class template of fixed dimension. More...

#include <bbox.h>

Public Types

enum  Uninitialized_tag { UNINITIALIZED_TAG }
 Enum type used to tag a special constructor that does not initialize the elements of the constructed bounding box. More...
 
typedef math::Vector<T, DIM> Vector
 Corresponding vector type. More...
 
typedef Bbox_struct<T, DIM> Pod_type
 POD class corresponding to this bounding box. More...
 
typedef Vector value_type
 Coordinate type. More...
 
typedef Size size_type
 Size type, unsigned. More...
 
typedef Difference difference_type
 Difference type, signed. More...
 
typedef Vectorpointer
 Mutable pointer to vector. More...
 
typedef const Vectorconst_pointer
 Const pointer to vector. More...
 
typedef Vectorreference
 Mutable reference to vector. More...
 
typedef const Vectorconst_reference
 Const reference to vector. More...
 

Public Member Functions

void clear ()
 Reinitializes this bounding box to the empty space. More...
 
 Bbox ()
 Bounding box initialized to the empty space, see also the clear function. More...
 
 Bbox (Uninitialized_tag)
 Bounding box with its elements not initialized. More...
 
 Bbox (const Bbox<T, DIM> &other)=default
 Default copy constructor. More...
 
 Bbox (const Bbox_struct<T, DIM> &bbox_struct)
 Bounding box initialized from corresponding POD type. More...
 
 Bbox (const Vector &point)
 Bounding box initialized to a single point. More...
 
 Bbox (const Vector &nmin, const Vector &nmax)
 Bounding box initialized to the new extreme corner vectors, nmin and nmax. More...
 
 Bbox (T min_x, T max_x)
 1D bounding box (interval) initialized to the new extreme corner vectors, (min_x) and (max_x). More...
 
 Bbox (T min_x, T min_y, T max_x, T max_y)
 2D bounding box (interval) initialized to the new extreme corner vectors, (min_x,min_y) and (max_x,max_y). More...
 
 Bbox (T min_x, T min_y, T min_z, T max_x, T max_y, T max_z)
 3D bounding box (interval) initialized to the new extreme corner vectors, (min_x,min_y,min_z) and (max_x,max_y,max_z). More...
 
template<typename InputIterator>
 Bbox (InputIterator first, InputIterator last)
 Constructs a bounding box from a range [first, last) of items. More...
 
template<typename T2>
 Bbox (const Bbox<T2, DIM> &other)
 Template constructor that allows explicit conversions from other bounding boxes with assignment compatible element value type. More...
 
template<typename T2>
 Bbox (const Bbox_struct<T2, DIM> &other)
 Template constructor that allows explicit conversions from other POD type with assignment compatible element value type. More...
 
Bboxoperator= (const Bbox &other)
 Assignment. More...
 
Bboxoperator= (const Bbox_struct<T, DIM> &other)
 Assignment from corresponding POD type. More...
 
 operator Bbox_struct<T, DIM> () const
 Conversion to corresponding POD type. More...
 
Vectorbegin ()
 Returns the pointer to the first vector, min. More...
 
const Vectorbegin () const
 Returns the pointer to the first vector, min. More...
 
Vectorend ()
 Returns the past-the-end pointer. More...
 
const Vectorend () const
 Returns the past-the-end pointer. More...
 
Vectoroperator[] (Size i)
 Returns the vector min for i==0, and the vector max for i==1. More...
 
const Vectoroperator[] (Size i) const
 Returns the vector min for i==0, and the vector max for i==1. More...
 
bool empty () const
 Returns true if the box is empty. More...
 
Size rank () const
 Returns the rank of the bounding box. More...
 
bool is_point () const
 Returns true the bounding box is a single point. More...
 
bool is_line () const
 Returns true the bounding box is an axis-aligned line. More...
 
bool is_plane () const
 Returns true the bounding box is an axis-aligned plane. More...
 
bool is_volume () const
 Returns true the bounding box has a volume. More...
 
bool contains (const Vector &vec) const
 Returns true if the point is inside or on the boundary of the bounding box. More...
 
bool intersects (const Bbox &other) const
 Returns true if this bounding box and the other bounding box intersect in their interiors or on their boundaries. More...
 
void insert (const Bbox &other)
 Assigns the union of this bounding box and the other bounding box to this bounding box. More...
 
void insert (const Vector &point)
 Assigns the union of this bounding box and the point to this bounding box. More...
 
template<typename InputIterator>
void insert (InputIterator first, InputIterator last)
 Inserts a range [first,last) of items into this bounding box. More...
 
Bbox add_motionbox (const Bbox &vbox, T t) const
 Returns the translation of this bounding box by vectors that are inside the scaled bounding box of vectors, i.e., t*vbox. More...
 
void push_back (const Bbox &other)
 Assigns the union of this bounding box and the other bounding box to this bounding box. More...
 
void robust_grow (T eps=T(1.0e-5f))
 Robustly grows the bounding box by a value computed automatically from the bounding box dimensions and location in space. More...
 
volume () const
 Returns the volume of the bounding box. More...
 
diagonal_length () const
 Returns the length of the diagonal. More...
 
Size largest_extent_index () const
 Returns the index of the dimension in which the bounding box has its largest extent, i.e., 0=x, 1=y, 2=z. More...
 
Vector center () const
 Returns the center point of the bounding box. More...
 
Vector extent () const
 Returns the size of the bounding box. More...
 

Static Public Member Functions

static Size size ()
 Constant size of the bounding box. More...
 
static Size max_size ()
 Constant maximum size of the bounding box. More...
 

Public Attributes

Vector min
 Elementwise minimal bounding box corner. More...
 
Vector max
 Elementwise maximal bounding box corner. More...
 

Static Public Attributes

static const Size DIMENSION = DIM
 Constant dimension of the vectors. More...
 
static const Size SIZE = 2
 Constant size of the bounding box. More...
 

Detailed Description

template<typename T, Size DIM>
class mi::math::Bbox<T, DIM>

Axis-aligned N-dimensional bounding box class template of fixed dimension.

A bounding box is represented by two mi::math::Vector vectors representing the elementwise minimal box corner, min, and the elementwise largest box corner, max.

An instantiation of the bounding box class template is a model of the STL container concept. It provides random access to its two vectors and corresponding random access iterators.

The template parameters have the following requirements:

  • T: an arithmetic type supporting + - * / == != < > <= >= .
  • DIM: a value > 0 of type mi::Size that defines the fixed dimension of the vectors used to represent the bounding box.
See also
The underlying POD type mi::math::Bbox_struct.
For the free functions and operators available for bounding boxes see Bounding Box Class.