OpenVDB  12.0.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
CoordBBox Class Reference

Axis-aligned bounding box of signed integer coordinates. More...

#include <openvdb/math/Coord.h>

Classes

class  Iterator
 Iterator over the Coord domain covered by a CoordBBox. More...
 

Public Types

using Index64 = uint64_t
 
using ValueType = Coord::ValueType
 
using ZYXIterator = Iterator< true >
 
using XYZIterator = Iterator< false >
 

Public Member Functions

 CoordBBox ()
 The default constructor produces an empty bounding box. More...
 
 CoordBBox (const Coord &min, const Coord &max)
 Construct a bounding box with the given min and max bounds. More...
 
 CoordBBox (ValueType xMin, ValueType yMin, ValueType zMin, ValueType xMax, ValueType yMax, ValueType zMax)
 Construct from individual components of the min and max bounds. More...
 
 CoordBBox (CoordBBox &other, const tbb::split &)
 Splitting constructor for use in TBB ranges. More...
 
const Coordmin () const
 
const Coordmax () const
 
Coordmin ()
 
Coordmax ()
 
void reset ()
 
void reset (const Coord &min, const Coord &max)
 
void resetToCube (const Coord &min, ValueType dim)
 
Coord getStart () const
 Return the minimum coordinate. More...
 
Coord getEnd () const
 Return the maximum coordinate plus one. More...
 
ZYXIterator begin () const
 Return a ZYX-order iterator that points to the minimum coordinate. More...
 
ZYXIterator beginZYX () const
 Return a ZYX-order iterator that points to the minimum coordinate. More...
 
XYZIterator beginXYZ () const
 Return an XYZ-order iterator that points to the minimum coordinate. More...
 
ZYXIterator end () const
 Return a ZYX-order iterator that points past the maximum coordinate. More...
 
ZYXIterator endZYX () const
 Return a ZYX-order iterator that points past the maximum coordinate. More...
 
XYZIterator endXYZ () const
 Return an XYZ-order iterator that points past the maximum coordinate. More...
 
bool operator== (const CoordBBox &rhs) const
 
bool operator!= (const CoordBBox &rhs) const
 
bool empty () const
 Return true if this bounding box is empty (i.e., encloses no coordinates). More...
 
 operator bool () const
 Return true if this bounding box is nonempty (i.e., encloses at least one coordinate). More...
 
bool hasVolume () const
 Return true if this bounding box is nonempty (i.e., encloses at least one coordinate). More...
 
Vec3d getCenter () const
 Return the floating-point position of the center of this bounding box. More...
 
Coord dim () const
 Return the dimensions of the coordinates spanned by this bounding box. More...
 
Coord extents () const
 
Index64 volume () const
 Return the integer volume of coordinates spanned by this bounding box. More...
 
bool is_divisible () const
 Return true if this bounding box can be subdivided [mainly for use by TBB]. More...
 
size_t minExtent () const
 Return the index (0, 1 or 2) of the shortest axis. More...
 
size_t maxExtent () const
 Return the index (0, 1 or 2) of the longest axis. More...
 
bool isInside (const Coord &xyz) const
 Return true if point (x, y, z) is inside this bounding box. More...
 
bool isInside (const CoordBBox &b) const
 Return true if the given bounding box is inside this bounding box. More...
 
bool hasOverlap (const CoordBBox &b) const
 Return true if the given bounding box overlaps with this bounding box. More...
 
void expand (ValueType padding)
 Pad this bounding box with the specified padding. More...
 
CoordBBox expandBy (ValueType padding) const
 Return a new instance that is expanded by the specified padding. More...
 
void expand (const Coord &xyz)
 Expand this bounding box to enclose point (x, y, z). More...
 
void expand (const CoordBBox &bbox)
 Union this bounding box with the given bounding box. More...
 
void intersect (const CoordBBox &bbox)
 Intersect this bounding box with the given bounding box. More...
 
void expand (const Coord &min, Coord::ValueType dim)
 Union this bounding box with the cubical bounding box of the given size and with the given minimum coordinates. More...
 
void translate (const Coord &t)
 Translate this bounding box by (tx, ty, tz). More...
 
void moveMin (const Coord &min)
 Move this bounding box to the specified min. More...
 
void moveMax (const Coord &max)
 Move this bounding box to the specified max. More...
 
void getCornerPoints (Coord *p) const
 Populates an array with the eight corner points of this bounding box. More...
 
void read (std::istream &is)
 Unserialize this bounding box from the given stream. More...
 
void write (std::ostream &os) const
 Serialize this bounding box to the given stream. More...
 
CoordBBox operator>> (size_t n) const
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBox operator<< (size_t n) const
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBoxoperator<<= (size_t n)
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBoxoperator>>= (size_t n)
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBox operator& (Coord::Int32 n) const
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBox operator| (Coord::Int32 n) const
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBoxoperator&= (Coord::Int32 n)
 Bit-wise operations performed on both the min and max members. More...
 
CoordBBoxoperator|= (Coord::Int32 n)
 Bit-wise operations performed on both the min and max members. More...
 

Static Public Member Functions

static CoordBBox createCube (const Coord &min, ValueType dim)
 
static CoordBBox inf ()
 Return an "infinite" bounding box, as defined by the Coord value range. More...
 

Detailed Description

Axis-aligned bounding box of signed integer coordinates.

Note
The range of the integer coordinates, [min, max], is inclusive. Thus, a bounding box with min = max is not empty but rather encloses a single coordinate.

Member Typedef Documentation

using Index64 = uint64_t
using XYZIterator = Iterator<false>
using ZYXIterator = Iterator<true>

Constructor & Destructor Documentation

CoordBBox ( )
inline

The default constructor produces an empty bounding box.

CoordBBox ( const Coord min,
const Coord max 
)
inline

Construct a bounding box with the given min and max bounds.

CoordBBox ( ValueType  xMin,
ValueType  yMin,
ValueType  zMin,
ValueType  xMax,
ValueType  yMax,
ValueType  zMax 
)
inline

Construct from individual components of the min and max bounds.

CoordBBox ( CoordBBox other,
const tbb::split &   
)
inline

Splitting constructor for use in TBB ranges.

Note
The other bounding box is assumed to be divisible.

Member Function Documentation

ZYXIterator begin ( ) const
inline

Return a ZYX-order iterator that points to the minimum coordinate.

XYZIterator beginXYZ ( ) const
inline

Return an XYZ-order iterator that points to the minimum coordinate.

ZYXIterator beginZYX ( ) const
inline

Return a ZYX-order iterator that points to the minimum coordinate.

static CoordBBox createCube ( const Coord min,
ValueType  dim 
)
inlinestatic
Coord dim ( ) const
inline

Return the dimensions of the coordinates spanned by this bounding box.

Note
Since coordinates are inclusive, a bounding box with min = max has dimensions of (1, 1, 1).
bool empty ( ) const
inline

Return true if this bounding box is empty (i.e., encloses no coordinates).

ZYXIterator end ( ) const
inline

Return a ZYX-order iterator that points past the maximum coordinate.

XYZIterator endXYZ ( ) const
inline

Return an XYZ-order iterator that points past the maximum coordinate.

ZYXIterator endZYX ( ) const
inline

Return a ZYX-order iterator that points past the maximum coordinate.

void expand ( ValueType  padding)
inline

Pad this bounding box with the specified padding.

void expand ( const Coord xyz)
inline

Expand this bounding box to enclose point (x, y, z).

void expand ( const CoordBBox bbox)
inline

Union this bounding box with the given bounding box.

void expand ( const Coord min,
Coord::ValueType  dim 
)
inline

Union this bounding box with the cubical bounding box of the given size and with the given minimum coordinates.

CoordBBox expandBy ( ValueType  padding) const
inline

Return a new instance that is expanded by the specified padding.

Coord extents ( ) const
inline
Vec3d getCenter ( ) const
inline

Return the floating-point position of the center of this bounding box.

void getCornerPoints ( Coord p) const
inline

Populates an array with the eight corner points of this bounding box.

The ordering of the corner points is lexicographic.

Warning
It is assumed that the pointer can be incremented at least seven times, i.e. has storage for eight Coord elements!
Coord getEnd ( ) const
inline

Return the maximum coordinate plus one.

Note
This end coordinate is exclusive.
Coord getStart ( ) const
inline

Return the minimum coordinate.

Note
The start coordinate is inclusive.
bool hasOverlap ( const CoordBBox b) const
inline

Return true if the given bounding box overlaps with this bounding box.

bool hasVolume ( ) const
inline

Return true if this bounding box is nonempty (i.e., encloses at least one coordinate).

static CoordBBox inf ( )
inlinestatic

Return an "infinite" bounding box, as defined by the Coord value range.

void intersect ( const CoordBBox bbox)
inline

Intersect this bounding box with the given bounding box.

bool is_divisible ( ) const
inline

Return true if this bounding box can be subdivided [mainly for use by TBB].

bool isInside ( const Coord xyz) const
inline

Return true if point (x, y, z) is inside this bounding box.

bool isInside ( const CoordBBox b) const
inline

Return true if the given bounding box is inside this bounding box.

const Coord& max ( ) const
inline
Coord& max ( )
inline
size_t maxExtent ( ) const
inline

Return the index (0, 1 or 2) of the longest axis.

const Coord& min ( ) const
inline
Coord& min ( )
inline
size_t minExtent ( ) const
inline

Return the index (0, 1 or 2) of the shortest axis.

void moveMax ( const Coord max)
inline

Move this bounding box to the specified max.

void moveMin ( const Coord min)
inline

Move this bounding box to the specified min.

operator bool ( ) const
inline

Return true if this bounding box is nonempty (i.e., encloses at least one coordinate).

bool operator!= ( const CoordBBox rhs) const
inline
CoordBBox operator& ( Coord::Int32  n) const
inline

Bit-wise operations performed on both the min and max members.

CoordBBox& operator&= ( Coord::Int32  n)
inline

Bit-wise operations performed on both the min and max members.

CoordBBox operator<< ( size_t  n) const
inline

Bit-wise operations performed on both the min and max members.

CoordBBox& operator<<= ( size_t  n)
inline

Bit-wise operations performed on both the min and max members.

bool operator== ( const CoordBBox rhs) const
inline
CoordBBox operator>> ( size_t  n) const
inline

Bit-wise operations performed on both the min and max members.

CoordBBox& operator>>= ( size_t  n)
inline

Bit-wise operations performed on both the min and max members.

CoordBBox operator| ( Coord::Int32  n) const
inline

Bit-wise operations performed on both the min and max members.

CoordBBox& operator|= ( Coord::Int32  n)
inline

Bit-wise operations performed on both the min and max members.

void read ( std::istream &  is)
inline

Unserialize this bounding box from the given stream.

void reset ( )
inline
void reset ( const Coord min,
const Coord max 
)
inline
void resetToCube ( const Coord min,
ValueType  dim 
)
inline
void translate ( const Coord t)
inline

Translate this bounding box by (tx, ty, tz).

Index64 volume ( ) const
inline

Return the integer volume of coordinates spanned by this bounding box.

Note
Since coordinates are inclusive, a bounding box with min = max has volume one.
void write ( std::ostream &  os) const
inline

Serialize this bounding box to the given stream.