Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
Eigen  3.3.90 (git rev 4a77eda1fdaebd7f92d587dfc0158a20dc0d2625)
Eigen::AlignedBox Class Reference

Detailed Description

An axis aligned box.

This is defined in the Geometry module.

#include <Eigen/Geometry>
Template Parameters
_Scalarthe type of the scalar coefficients
_AmbientDimthe 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.

Warning
The result of most methods is undefined when applied to an empty box. You can check for empty boxes using isEmpty().
See also
Global aligned box typedefs

Public Types

enum  CornerType {
  Min,
  Max,
  BottomLeft,
  BottomRight,
  TopLeft,
  TopRight,
  BottomLeftFloor,
  BottomRightFloor,
  TopLeftFloor,
  TopRightFloor,
  BottomLeftCeil,
  BottomRightCeil,
  TopLeftCeil,
  TopRightCeil
}
 
typedef Eigen::Index Index
 

Public Member Functions

 AlignedBox ()
 
template<typename OtherScalarType >
 AlignedBox (const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &other)
 
template<typename Derived >
 AlignedBox (const MatrixBase< Derived > &p)
 
template<typename OtherVectorType1 , typename OtherVectorType2 >
 AlignedBox (const OtherVectorType1 &_min, const OtherVectorType2 &_max)
 
 AlignedBox (Index _dim)
 
template<typename NewScalarType >
internal::cast_return_type< AlignedBox, AlignedBox< NewScalarType, AmbientDimAtCompileTime > >::type cast () const
 
AlignedBoxclamp (const AlignedBox &b)
 
bool contains (const AlignedBox &b) const
 
template<typename Derived >
bool contains (const MatrixBase< Derived > &p) const
 
VectorType corner (CornerType corner) const
 
CwiseBinaryOp< internal::scalar_difference_op< Scalar, Scalar >, const VectorType, const VectorTypediagonal () const
 
Index dim () const
 
const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE (VectorTypeSum, RealScalar, quotient) center() const
 
AlignedBoxextend (const AlignedBox &b)
 
template<typename Derived >
AlignedBoxextend (const MatrixBase< Derived > &p)
 
NonInteger exteriorDistance (const AlignedBox &b) const
 
template<typename Derived >
NonInteger exteriorDistance (const MatrixBase< Derived > &p) const
 
AlignedBox intersection (const AlignedBox &b) const
 
bool intersects (const AlignedBox &b) const
 
bool isApprox (const AlignedBox &other, const RealScalar &prec=ScalarTraits::dummy_precision()) const
 
bool isEmpty () const
 
bool isNull () const
 
VectorType &() max ()
 
const VectorType &() max () const
 
AlignedBox merged (const AlignedBox &b) const
 
VectorType &() min ()
 
const VectorType &() min () const
 
VectorType sample () const
 
void setEmpty ()
 
void setNull ()
 
const CwiseBinaryOp< internal::scalar_difference_op< Scalar, Scalar >, const VectorType, const VectorTypesizes () const
 
Scalar squaredExteriorDistance (const AlignedBox &b) const
 
template<typename Derived >
Scalar squaredExteriorDistance (const MatrixBase< Derived > &p) const
 
template<int Mode, int Options>
void transform (const Transform< Scalar, AmbientDimAtCompileTime, Mode, Options > &transform)
 
template<int Mode, int Options>
void transform (const typename Transform< Scalar, AmbientDimAtCompileTime, Mode, Options >::TranslationType &translation)
 
template<int Mode, int Options>
AlignedBox transformed (const Transform< Scalar, AmbientDimAtCompileTime, Mode, Options > &transform) const
 
template<typename Derived >
AlignedBoxtranslate (const MatrixBase< Derived > &a_t)
 
template<typename Derived >
AlignedBox translated (const MatrixBase< Derived > &a_t) const
 
Scalar volume () const
 

Member Typedef Documentation

◆ Index

Member Enumeration Documentation

◆ CornerType

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

Enumerator
Min 

1D names

Max 

1D names

BottomLeft 

Identifier for 2D corner

BottomRight 

Identifier for 2D corner

TopLeft 

Identifier for 2D corner

TopRight 

Identifier for 2D corner

BottomLeftFloor 

Identifier for 3D corner

BottomRightFloor 

Identifier for 3D corner

TopLeftFloor 

Identifier for 3D corner

TopRightFloor 

Identifier for 3D corner

BottomLeftCeil 

Identifier for 3D corner

BottomRightCeil 

Identifier for 3D corner

TopLeftCeil 

Identifier for 3D corner

TopRightCeil 

Identifier for 3D corner

Constructor & Destructor Documentation

◆ AlignedBox() [1/5]

Eigen::AlignedBox::AlignedBox ( )
inline

Default constructor initializing a null box.

◆ AlignedBox() [2/5]

Eigen::AlignedBox::AlignedBox ( Index  _dim)
inlineexplicit

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

◆ AlignedBox() [3/5]

template<typename OtherVectorType1 , typename OtherVectorType2 >
Eigen::AlignedBox::AlignedBox ( const OtherVectorType1 &  _min,
const OtherVectorType2 &  _max 
)
inline

Constructs a box with extremities _min and _max.

Warning
If either component of _min is larger than the same component of _max, the constructed box is empty.

◆ AlignedBox() [4/5]

template<typename Derived >
Eigen::AlignedBox::AlignedBox ( const MatrixBase< Derived > &  p)
inlineexplicit

Constructs a box containing a single point p.

◆ AlignedBox() [5/5]

template<typename OtherScalarType >
Eigen::AlignedBox::AlignedBox ( const AlignedBox< OtherScalarType, AmbientDimAtCompileTime > &  other)
inlineexplicit

Copy constructor with scalar type conversion

Member Function Documentation

◆ cast()

template<typename NewScalarType >
internal::cast_return_type<AlignedBox, AlignedBox<NewScalarType,AmbientDimAtCompileTime> >::type Eigen::AlignedBox::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.

◆ clamp()

AlignedBox& Eigen::AlignedBox::clamp ( const AlignedBox b)
inline

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

Note
If the boxes don't intersect, the resulting box is empty.
See also
intersection(), intersects()

◆ contains() [1/2]

bool Eigen::AlignedBox::contains ( const AlignedBox b) const
inline
Returns
true if the box b is entirely inside the box *this.

◆ contains() [2/2]

template<typename Derived >
bool Eigen::AlignedBox::contains ( const MatrixBase< Derived > &  p) const
inline
Returns
true if the point p is inside the box *this.

◆ corner()

VectorType Eigen::AlignedBox::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.

◆ diagonal()

CwiseBinaryOp< internal::scalar_difference_op<Scalar,Scalar>, const VectorType, const VectorType> Eigen::AlignedBox::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.

◆ dim()

Index Eigen::AlignedBox::dim ( ) const
inline
Returns
the dimension in which the box holds

◆ EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE()

const Eigen::AlignedBox::EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE ( VectorTypeSum  ,
RealScalar  ,
quotient   
) const
inline
Returns
the center of the box

◆ extend() [1/2]

AlignedBox& Eigen::AlignedBox::extend ( const AlignedBox b)
inline

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

See also
merged, extend(const MatrixBase&)

◆ extend() [2/2]

template<typename Derived >
AlignedBox& Eigen::AlignedBox::extend ( const MatrixBase< Derived > &  p)
inline

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

See also
extend(const AlignedBox&)

◆ exteriorDistance() [1/2]

NonInteger Eigen::AlignedBox::exteriorDistance ( const AlignedBox b) const
inline
Returns
the distance between the boxes b and *this, and zero if the boxes intersect.
See also
squaredExteriorDistance(const AlignedBox&), exteriorDistance(const MatrixBase&)

◆ exteriorDistance() [2/2]

template<typename Derived >
NonInteger Eigen::AlignedBox::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(const MatrixBase&), exteriorDistance(const AlignedBox&)

◆ intersection()

AlignedBox Eigen::AlignedBox::intersection ( const AlignedBox b) const
inline

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

Note
If the boxes don't intersect, the resulting box is empty.
See also
intersects(), clamp, contains()

◆ intersects()

bool Eigen::AlignedBox::intersects ( const AlignedBox b) const
inline
Returns
true if the box b is intersecting the box *this.
See also
intersection, clamp

◆ isApprox()

bool Eigen::AlignedBox::isApprox ( const AlignedBox other,
const 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()

◆ isEmpty()

bool Eigen::AlignedBox::isEmpty ( ) const
inline
Returns
true if the box is empty.
See also
setEmpty

◆ isNull()

bool Eigen::AlignedBox::isNull ( ) const
inline

◆ max() [1/2]

VectorType&() Eigen::AlignedBox::max ( )
inline
Returns
a non const reference to the maximal corner

◆ max() [2/2]

const VectorType&() Eigen::AlignedBox::max ( ) const
inline
Returns
the maximal corner

◆ merged()

AlignedBox Eigen::AlignedBox::merged ( const AlignedBox b) const
inline

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

Note
Merging with an empty box may result in a box bigger than *this.
See also
extend(const AlignedBox&)

◆ min() [1/2]

VectorType&() Eigen::AlignedBox::min ( )
inline
Returns
a non const reference to the minimal corner

◆ min() [2/2]

const VectorType&() Eigen::AlignedBox::min ( ) const
inline
Returns
the minimal corner

◆ sample()

VectorType Eigen::AlignedBox::sample ( ) const
inline
Returns
a random point inside the bounding box sampled with a uniform distribution

◆ setEmpty()

void Eigen::AlignedBox::setEmpty ( )
inline

Makes *this an empty box.

See also
isEmpty

◆ setNull()

void Eigen::AlignedBox::setNull ( )
inline

◆ sizes()

const CwiseBinaryOp< internal::scalar_difference_op<Scalar,Scalar>, const VectorType, const VectorType> Eigen::AlignedBox::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

◆ squaredExteriorDistance() [1/2]

Scalar Eigen::AlignedBox::squaredExteriorDistance ( const AlignedBox b) const
inline
Returns
the squared distance between the boxes b and *this, and zero if the boxes intersect.
See also
exteriorDistance(const AlignedBox&), squaredExteriorDistance(const MatrixBase&)

◆ squaredExteriorDistance() [2/2]

template<typename Derived >
Scalar Eigen::AlignedBox::squaredExteriorDistance ( const MatrixBase< Derived > &  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(const MatrixBase&), squaredExteriorDistance(const AlignedBox&)

◆ transform() [1/2]

template<int Mode, int Options>
void Eigen::AlignedBox::transform ( const Transform< Scalar, AmbientDimAtCompileTime, Mode, Options > &  transform)
inline

Transforms this box by transform and recomputes it to still be an axis-aligned box.

Note
This method is provided under BSD license (see the top of this file).

◆ transform() [2/2]

template<int Mode, int Options>
void Eigen::AlignedBox::transform ( const typename Transform< Scalar, AmbientDimAtCompileTime, Mode, Options >::TranslationType &  translation)
inline

Specialization of transform for pure translation.

◆ transformed()

template<int Mode, int Options>
AlignedBox Eigen::AlignedBox::transformed ( const Transform< Scalar, AmbientDimAtCompileTime, Mode, Options > &  transform) const
inline
Returns
a copy of *this transformed by transform and recomputed to still be an axis-aligned box.

◆ translate()

template<typename Derived >
AlignedBox& Eigen::AlignedBox::translate ( const MatrixBase< Derived > &  a_t)
inline

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

◆ translated()

template<typename Derived >
AlignedBox Eigen::AlignedBox::translated ( const MatrixBase< Derived > &  a_t) const
inline
Returns
a copy of *this translated by the vector t.

◆ volume()

Scalar Eigen::AlignedBox::volume ( ) const
inline
Returns
the volume of the bounding box

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