Public Types | Public Member Functions | Protected Attributes

AlignedBox< _Scalar, _AmbientDim > Class Template Reference
[Geometry_Module]

An axis aligned box. More...

#include <AlignedBox.h>

List of all members.

Public Types

enum  { AmbientDimAtCompileTime = _AmbientDim }
enum  { AmbientDimAtCompileTime = _AmbientDim }
enum  CornerType {
  Min = 0, Max = 1, BottomLeft = 0, BottomRight = 1,
  TopLeft = 2, TopRight = 3, BottomLeftFloor = 0, BottomRightFloor = 1,
  TopLeftFloor = 2, TopRightFloor = 3, BottomLeftCeil = 4, BottomRightCeil = 5,
  TopLeftCeil = 6, TopRightCeil = 7
}
typedef _Scalar Scalar
typedef NumTraits< Scalar >::Real RealScalar
typedef Matrix< Scalar,
AmbientDimAtCompileTime, 1 > 
VectorType
typedef _Scalar Scalar
typedef NumTraits< ScalarScalarTraits
typedef DenseIndex Index
typedef ScalarTraits::Real RealScalar
typedef ScalarTraits::NonInteger NonInteger
typedef Matrix< Scalar,
AmbientDimAtCompileTime, 1 > 
VectorType

Public Member Functions

 AlignedBox ()
 AlignedBox (int _dim)
 AlignedBox (const VectorType &_min, const VectorType &_max)
 AlignedBox (const VectorType &p)
 ~AlignedBox ()
int dim () const
bool isNull () const
void setNull ()
const VectorTypemin () const
VectorTypemin ()
const VectorTypemax () const
VectorTypemax ()
bool contains (const VectorType &p) const
bool contains (const AlignedBox &b) const
AlignedBoxextend (const VectorType &p)
AlignedBoxextend (const AlignedBox &b)
AlignedBoxclamp (const AlignedBox &b)
AlignedBoxtranslate (const VectorType &t)
Scalar squaredExteriorDistance (const VectorType &p) const
Scalar exteriorDistance (const VectorType &p) const
template<typename NewScalarType >
internal::cast_return_type
< AlignedBox, AlignedBox
< NewScalarType,
AmbientDimAtCompileTime >
>::type 
cast () const
template<typename OtherScalarType >
 AlignedBox (const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &other)
bool isApprox (const AlignedBox &other, typename NumTraits< Scalar >::Real prec=precision< Scalar >()) const
 AlignedBox ()
 AlignedBox (Index _dim)
template<typename OtherVectorType1 , typename OtherVectorType2 >
 AlignedBox (const OtherVectorType1 &_min, const OtherVectorType2 &_max)
template<typename Derived >
 AlignedBox (const MatrixBase< Derived > &a_p)
 ~AlignedBox ()
Index dim () const
bool isNull () const
void setNull ()
bool isEmpty () const
void setEmpty ()
const VectorTypemin () const
VectorTypemin ()
const VectorTypemax () const
VectorTypemax ()
const CwiseUnaryOp
< internal::scalar_quotient1_op
< Scalar >, const
CwiseBinaryOp
< internal::scalar_sum_op
< Scalar >, const VectorType,
const VectorType > > 
center () const
const CwiseBinaryOp
< internal::scalar_difference_op
< Scalar >, const VectorType,
const VectorType
sizes () const
Scalar volume () const
CwiseBinaryOp
< internal::scalar_difference_op
< Scalar >, const VectorType,
const VectorType
diagonal () const
VectorType corner (CornerType corner) const
VectorType sample () const
template<typename Derived >
bool contains (const MatrixBase< Derived > &a_p) const
bool contains (const AlignedBox &b) const
template<typename Derived >
AlignedBoxextend (const MatrixBase< Derived > &a_p)
AlignedBoxextend (const AlignedBox &b)
AlignedBoxclamp (const AlignedBox &b)
AlignedBox intersection (const AlignedBox &b) const
AlignedBox merged (const AlignedBox &b) const
template<typename Derived >
AlignedBoxtranslate (const MatrixBase< Derived > &a_t)
template<typename Derived >
Scalar squaredExteriorDistance (const MatrixBase< Derived > &a_p) const
Scalar squaredExteriorDistance (const AlignedBox &b) const
template<typename Derived >
NonInteger exteriorDistance (const MatrixBase< Derived > &p) const
NonInteger exteriorDistance (const AlignedBox &b) const
template<typename NewScalarType >
internal::cast_return_type
< AlignedBox, AlignedBox
< NewScalarType,
AmbientDimAtCompileTime >
>::type 
cast () const
template<typename OtherScalarType >
 AlignedBox (const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &other)
bool isApprox (const AlignedBox &other, RealScalar prec=ScalarTraits::dummy_precision()) const

Protected Attributes

VectorType m_min
VectorType m_max

Detailed Description

template<typename _Scalar, int _AmbientDim>
class AlignedBox< _Scalar, _AmbientDim >

An axis aligned box.

Parameters:
_Scalar the type of the scalar coefficients
_AmbientDim the dimension of the ambient space, can be a compile time value or Dynamic.

This class represents an axis aligned box as a pair of the minimal and maximal corners.

Parameters:
_Scalar the type of the scalar coefficients
_AmbientDim the dimension of the ambient space, can be a compile time value or Dynamic.

This class represents an axis aligned box as a pair of the minimal and maximal corners.


Member Typedef Documentation

template<typename _Scalar, int _AmbientDim>
typedef DenseIndex AlignedBox< _Scalar, _AmbientDim >::Index
template<typename _Scalar, int _AmbientDim>
typedef ScalarTraits::NonInteger AlignedBox< _Scalar, _AmbientDim >::NonInteger
template<typename _Scalar, int _AmbientDim>
typedef NumTraits<Scalar>::Real AlignedBox< _Scalar, _AmbientDim >::RealScalar
template<typename _Scalar, int _AmbientDim>
typedef ScalarTraits::Real AlignedBox< _Scalar, _AmbientDim >::RealScalar
template<typename _Scalar, int _AmbientDim>
typedef _Scalar AlignedBox< _Scalar, _AmbientDim >::Scalar
template<typename _Scalar, int _AmbientDim>
typedef _Scalar AlignedBox< _Scalar, _AmbientDim >::Scalar
template<typename _Scalar, int _AmbientDim>
typedef NumTraits<Scalar> AlignedBox< _Scalar, _AmbientDim >::ScalarTraits
template<typename _Scalar, int _AmbientDim>
typedef Matrix<Scalar,AmbientDimAtCompileTime,1> AlignedBox< _Scalar, _AmbientDim >::VectorType
template<typename _Scalar, int _AmbientDim>
typedef Matrix<Scalar,AmbientDimAtCompileTime,1> AlignedBox< _Scalar, _AmbientDim >::VectorType

Member Enumeration Documentation

template<typename _Scalar, int _AmbientDim>
anonymous enum
Enumerator:
AmbientDimAtCompileTime 
template<typename _Scalar, int _AmbientDim>
anonymous enum
Enumerator:
AmbientDimAtCompileTime 
template<typename _Scalar, int _AmbientDim>
enum AlignedBox::CornerType

Define constants to name the corners of a 1D, 2D or 3D axis aligned bounding box

Enumerator:
Min 

1D names

Max 
BottomLeft 

Added names for 2D

BottomRight 
TopLeft 
TopRight 
BottomLeftFloor 

Added names for 3D

BottomRightFloor 
TopLeftFloor 
TopRightFloor 
BottomLeftCeil 
BottomRightCeil 
TopLeftCeil 
TopRightCeil 

Constructor & Destructor Documentation

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::AlignedBox (  )  [inline, explicit]

Default constructor initializing a null box.

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( int  _dim  )  [inline, explicit]

Constructs a null box with _dim the dimension of the ambient space.

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( const VectorType _min,
const VectorType _max 
) [inline]

Constructs a box with extremities _min and _max.

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( const VectorType p  )  [inline, explicit]

Constructs a box containing a single point p.

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::~AlignedBox (  )  [inline]
template<typename _Scalar, int _AmbientDim>
template<typename OtherScalarType >
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &  other  )  [inline, explicit]

Copy constructor with scalar type conversion

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::AlignedBox (  )  [inline, explicit]

Default constructor initializing a null box.

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( Index  _dim  )  [inline, explicit]

Constructs a null box with _dim the dimension of the ambient space.

template<typename _Scalar, int _AmbientDim>
template<typename OtherVectorType1 , typename OtherVectorType2 >
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( const OtherVectorType1 &  _min,
const OtherVectorType2 &  _max 
) [inline]

Constructs a box with extremities _min and _max.

template<typename _Scalar, int _AmbientDim>
template<typename Derived >
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( const MatrixBase< Derived > &  a_p  )  [inline, explicit]

Constructs a box containing a single point p.

template<typename _Scalar, int _AmbientDim>
AlignedBox< _Scalar, _AmbientDim >::~AlignedBox (  )  [inline]
template<typename _Scalar, int _AmbientDim>
template<typename OtherScalarType >
AlignedBox< _Scalar, _AmbientDim >::AlignedBox ( const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &  other  )  [inline, explicit]

Copy constructor with scalar type conversion


Member Function Documentation

template<typename _Scalar, int _AmbientDim>
template<typename NewScalarType >
internal::cast_return_type<AlignedBox, AlignedBox<NewScalarType,AmbientDimAtCompileTime> >::type AlignedBox< _Scalar, _AmbientDim >::cast (  )  const [inline]
Returns:
*this with scalar type casted to NewScalarType

Note that if NewScalarType is equal to the current scalar type of *this then this function smartly returns a const reference to *this.

template<typename _Scalar, int _AmbientDim>
template<typename NewScalarType >
internal::cast_return_type<AlignedBox, AlignedBox<NewScalarType,AmbientDimAtCompileTime> >::type AlignedBox< _Scalar, _AmbientDim >::cast (  )  const [inline]
Returns:
*this with scalar type casted to NewScalarType

Note that if NewScalarType is equal to the current scalar type of *this then this function smartly returns a const reference to *this.

template<typename _Scalar, int _AmbientDim>
const CwiseUnaryOp<internal::scalar_quotient1_op<Scalar>, const CwiseBinaryOp<internal::scalar_sum_op<Scalar>, const VectorType, const VectorType> > AlignedBox< _Scalar, _AmbientDim >::center (  )  const [inline]
Returns:
the center of the box
template<typename _Scalar, int _AmbientDim>
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::clamp ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  [inline]

Clamps *this by the box b and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::clamp ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  [inline]

Clamps *this by the box b and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
template<typename Derived >
bool AlignedBox< _Scalar, _AmbientDim >::contains ( const MatrixBase< Derived > &  a_p  )  const [inline]
Returns:
true if the point p is inside the box *this.
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::contains ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  const [inline]
Returns:
true if the box b is entirely inside the box *this.
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::contains ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  const [inline]
Returns:
true if the box b is entirely inside the box *this.
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::contains ( const VectorType p  )  const [inline]
Returns:
true if the point p is inside the box *this.
template<typename _Scalar, int _AmbientDim>
VectorType AlignedBox< _Scalar, _AmbientDim >::corner ( CornerType  corner  )  const [inline]
Returns:
the vertex of the bounding box at the corner defined by the corner-id corner. It works only for a 1D, 2D or 3D bounding box. For 1D bounding boxes corners are named by 2 enum constants: BottomLeft and BottomRight. For 2D bounding boxes, corners are named by 4 enum constants: BottomLeft, BottomRight, TopLeft, TopRight. For 3D bounding boxes, the following names are added: BottomLeftCeil, BottomRightCeil, TopLeftCeil, TopRightCeil.
template<typename _Scalar, int _AmbientDim>
CwiseBinaryOp< internal::scalar_difference_op<Scalar>, const VectorType, const VectorType> AlignedBox< _Scalar, _AmbientDim >::diagonal (  )  const [inline]
Returns:
an expression for the bounding box diagonal vector if the length of the diagonal is needed: diagonal().norm() will provide it.
template<typename _Scalar, int _AmbientDim>
int AlignedBox< _Scalar, _AmbientDim >::dim (  )  const [inline]
Returns:
the dimension in which the box holds
template<typename _Scalar, int _AmbientDim>
Index AlignedBox< _Scalar, _AmbientDim >::dim (  )  const [inline]
Returns:
the dimension in which the box holds
template<typename _Scalar, int _AmbientDim>
template<typename Derived >
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::extend ( const MatrixBase< Derived > &  a_p  )  [inline]

Extends *this such that it contains the point p and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::extend ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  [inline]

Extends *this such that it contains the box b and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::extend ( const VectorType p  )  [inline]

Extends *this such that it contains the point p and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::extend ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  [inline]

Extends *this such that it contains the box b and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
template<typename Derived >
NonInteger AlignedBox< _Scalar, _AmbientDim >::exteriorDistance ( const MatrixBase< Derived > &  p  )  const [inline]
Returns:
the distance between the point p and the box *this, and zero if p is inside the box.
See also:
squaredExteriorDistance()
template<typename _Scalar, int _AmbientDim>
NonInteger AlignedBox< _Scalar, _AmbientDim >::exteriorDistance ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  const [inline]
Returns:
the distance between the boxes b and *this, and zero if the boxes intersect.
See also:
squaredExteriorDistance()
template<typename _Scalar, int _AmbientDim>
Scalar AlignedBox< _Scalar, _AmbientDim >::exteriorDistance ( const VectorType p  )  const [inline]
Returns:
the distance between the point p and the box *this, and zero if p is inside the box.
See also:
squaredExteriorDistance()
template<typename _Scalar, int _AmbientDim>
AlignedBox AlignedBox< _Scalar, _AmbientDim >::intersection ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  const [inline]

Returns an AlignedBox that is the intersection of b and *this

template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::isApprox ( const AlignedBox< _Scalar, _AmbientDim > &  other,
typename NumTraits< Scalar >::Real  prec = precision<Scalar>() 
) const [inline]
Returns:
true if *this is approximately equal to other, within the precision determined by prec.
See also:
MatrixBase::isApprox()
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::isApprox ( const AlignedBox< _Scalar, _AmbientDim > &  other,
RealScalar  prec = ScalarTraits::dummy_precision() 
) const [inline]
Returns:
true if *this is approximately equal to other, within the precision determined by prec.
See also:
MatrixBase::isApprox()
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::isEmpty (  )  const [inline]
Returns:
true if the box is empty.
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::isNull (  )  const [inline]
Returns:
true if the box is null, i.e, empty.
template<typename _Scalar, int _AmbientDim>
bool AlignedBox< _Scalar, _AmbientDim >::isNull (  )  const [inline]
Deprecated:
use isEmpty
template<typename _Scalar, int _AmbientDim>
VectorType& AlignedBox< _Scalar, _AmbientDim >::max (  )  [inline]
Returns:
a non const reference to the maximal corner
template<typename _Scalar, int _AmbientDim>
VectorType& AlignedBox< _Scalar, _AmbientDim >::max (  )  [inline]
Returns:
a non const reference to the maximal corner
template<typename _Scalar, int _AmbientDim>
const VectorType& AlignedBox< _Scalar, _AmbientDim >::max (  )  const [inline]
Returns:
the maximal corner
template<typename _Scalar, int _AmbientDim>
const VectorType& AlignedBox< _Scalar, _AmbientDim >::max (  )  const [inline]
Returns:
the maximal corner
template<typename _Scalar, int _AmbientDim>
AlignedBox AlignedBox< _Scalar, _AmbientDim >::merged ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  const [inline]

Returns an AlignedBox that is the union of b and *this

template<typename _Scalar, int _AmbientDim>
VectorType& AlignedBox< _Scalar, _AmbientDim >::min (  )  [inline]
Returns:
a non const reference to the minimal corner
template<typename _Scalar, int _AmbientDim>
const VectorType& AlignedBox< _Scalar, _AmbientDim >::min (  )  const [inline]
Returns:
the minimal corner
template<typename _Scalar, int _AmbientDim>
const VectorType& AlignedBox< _Scalar, _AmbientDim >::min (  )  const [inline]
Returns:
the minimal corner
template<typename _Scalar, int _AmbientDim>
VectorType& AlignedBox< _Scalar, _AmbientDim >::min (  )  [inline]
Returns:
a non const reference to the minimal corner
template<typename _Scalar, int _AmbientDim>
VectorType AlignedBox< _Scalar, _AmbientDim >::sample (  )  const [inline]
Returns:
a random point inside the bounding box sampled with a uniform distribution
template<typename _Scalar, int _AmbientDim>
void AlignedBox< _Scalar, _AmbientDim >::setEmpty (  )  [inline]

Makes *this an empty box.

template<typename _Scalar, int _AmbientDim>
void AlignedBox< _Scalar, _AmbientDim >::setNull (  )  [inline]

Makes *this a null/empty box.

template<typename _Scalar, int _AmbientDim>
void AlignedBox< _Scalar, _AmbientDim >::setNull (  )  [inline]
Deprecated:
use setEmpty
template<typename _Scalar, int _AmbientDim>
const CwiseBinaryOp< internal::scalar_difference_op<Scalar>, const VectorType, const VectorType> AlignedBox< _Scalar, _AmbientDim >::sizes (  )  const [inline]
Returns:
the lengths of the sides of the bounding box. Note that this function does not get the same result for integral or floating scalar types: see
template<typename Scalar , int AmbiantDim>
Scalar AlignedBox< Scalar, AmbiantDim >::squaredExteriorDistance ( const VectorType p  )  const [inline]
Returns:
the squared distance between the point p and the box *this, and zero if p is inside the box.
See also:
exteriorDistance()
template<typename Scalar , int AmbientDim>
Scalar AlignedBox< Scalar, AmbientDim >::squaredExteriorDistance ( const AlignedBox< _Scalar, _AmbientDim > &  b  )  const [inline]
Returns:
the squared distance between the boxes b and *this, and zero if the boxes intersect.
See also:
exteriorDistance()
template<typename Scalar , int AmbientDim>
template<typename Derived >
Scalar AlignedBox< Scalar, AmbientDim >::squaredExteriorDistance ( const MatrixBase< Derived > &  a_p  )  const [inline]
Returns:
the squared distance between the point p and the box *this, and zero if p is inside the box.
See also:
exteriorDistance()
template<typename _Scalar, int _AmbientDim>
template<typename Derived >
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::translate ( const MatrixBase< Derived > &  a_t  )  [inline]

Translate *this by the vector t and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
AlignedBox& AlignedBox< _Scalar, _AmbientDim >::translate ( const VectorType t  )  [inline]

Translate *this by the vector t and returns a reference to *this.

template<typename _Scalar, int _AmbientDim>
Scalar AlignedBox< _Scalar, _AmbientDim >::volume (  )  const [inline]
Returns:
the volume of the bounding box

Member Data Documentation

template<typename _Scalar, int _AmbientDim>
VectorType AlignedBox< _Scalar, _AmbientDim >::m_max [protected]
template<typename _Scalar, int _AmbientDim>
VectorType AlignedBox< _Scalar, _AmbientDim >::m_min [protected]

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