Open CASCADE Technology  7.3.0
Public Member Functions | Protected Member Functions
Bnd_OBB Class Reference

The class describes the Oriented Bounding Box (OBB), much tighter enclosing volume for the shape than the Axis Aligned Bounding Box (AABB). The OBB is defined by a center of the box, the axes and the halves of its three dimensions. The OBB can be used more effectively than AABB as a rejection mechanism for non-interfering objects. More...

#include <Bnd_OBB.hxx>

Public Member Functions

 Bnd_OBB ()
 Empty constructor. More...
 
 Bnd_OBB (const gp_Pnt &theCenter, const gp_Dir &theXDirection, const gp_Dir &theYDirection, const gp_Dir &theZDirection, const Standard_Real theHXSize, const Standard_Real theHYSize, const Standard_Real theHZSize)
 Constructor taking all defining parameters. More...
 
 Bnd_OBB (const Bnd_Box &theBox)
 Constructor to create OBB from AABB. More...
 
void ReBuild (const TColgp_Array1OfPnt &theListOfPoints, const TColStd_Array1OfReal *theListOfTolerances=0)
 Created new OBB covering every point in theListOfPoints. Tolerance of every such point is set by *theListOfTolerances array. If this array is not void (not null-pointer) then the resulted Bnd_OBB will be enlarged using tolerances of points lying on the box surface. More...
 
void SetCenter (const gp_Pnt &theCenter)
 Sets the center of OBB. More...
 
void SetXComponent (const gp_Dir &theXDirection, const Standard_Real theHXSize)
 Sets the X component of OBB - direction and size. More...
 
void SetYComponent (const gp_Dir &theYDirection, const Standard_Real theHYSize)
 Sets the Y component of OBB - direction and size. More...
 
void SetZComponent (const gp_Dir &theZDirection, const Standard_Real theHZSize)
 Sets the Z component of OBB - direction and size. More...
 
const gp_XYZCenter () const
 Returns the center of OBB. More...
 
const gp_XYZXDirection () const
 Returns the X Direction of OBB. More...
 
const gp_XYZYDirection () const
 Returns the Y Direction of OBB. More...
 
const gp_XYZZDirection () const
 Returns the Z Direction of OBB. More...
 
Standard_Real XHSize () const
 Returns the X Dimension of OBB. More...
 
Standard_Real YHSize () const
 Returns the Y Dimension of OBB. More...
 
Standard_Real ZHSize () const
 Returns the Z Dimension of OBB. More...
 
Standard_Boolean IsVoid () const
 Checks if the box is empty. More...
 
void SetVoid ()
 Clears this box. More...
 
void SetAABox (const Standard_Boolean &theFlag)
 Sets the flag for axes aligned box. More...
 
Standard_Boolean IsAABox () const
 Returns TRUE if the box is axes aligned. More...
 
void Enlarge (const Standard_Real theGapAdd)
 Enlarges the box with the given value. More...
 
Standard_Boolean GetVertex (gp_Pnt theP[8]) const
 Returns the array of vertices in <this>. The local coordinate of the vertex depending on the index of the array are follow: Index == 0: (-XHSize(), -YHSize(), -ZHSize()) Index == 1: ( XHSize(), -YHSize(), -ZHSize()) Index == 2: (-XHSize(), YHSize(), -ZHSize()) Index == 3: ( XHSize(), YHSize(), -ZHSize()) Index == 4: (-XHSize(), -YHSize(), ZHSize()) Index == 5: ( XHSize(), -YHSize(), ZHSize()) Index == 6: (-XHSize(), YHSize(), ZHSize()) Index == 7: ( XHSize(), YHSize(), ZHSize()). More...
 
Standard_Real SquareExtent () const
 Returns square diagonal of this box. More...
 
Standard_Boolean IsOut (const Bnd_OBB &theOther) const
 Check if the box do not interfere the other box. More...
 
Standard_Boolean IsOut (const gp_Pnt &theP) const
 Check if the point is inside of <this>. More...
 
Standard_Boolean IsCompletelyInside (const Bnd_OBB &theOther) const
 Check if the theOther is completely inside *this. More...
 
void Add (const Bnd_OBB &theOther)
 Rebuilds this in order to include all previous objects (which it was created from) and theOther. More...
 
void Add (const gp_Pnt &theP)
 Rebuilds this in order to include all previous objects (which it was created from) and theP. More...
 

Protected Member Functions

void ProcessOnePoint (const gp_Pnt &theP)
 

Detailed Description

The class describes the Oriented Bounding Box (OBB), much tighter enclosing volume for the shape than the Axis Aligned Bounding Box (AABB). The OBB is defined by a center of the box, the axes and the halves of its three dimensions. The OBB can be used more effectively than AABB as a rejection mechanism for non-interfering objects.

Constructor & Destructor Documentation

◆ Bnd_OBB() [1/3]

Bnd_OBB::Bnd_OBB ( )
inline

Empty constructor.

◆ Bnd_OBB() [2/3]

Bnd_OBB::Bnd_OBB ( const gp_Pnt theCenter,
const gp_Dir theXDirection,
const gp_Dir theYDirection,
const gp_Dir theZDirection,
const Standard_Real  theHXSize,
const Standard_Real  theHYSize,
const Standard_Real  theHZSize 
)
inline

Constructor taking all defining parameters.

◆ Bnd_OBB() [3/3]

Bnd_OBB::Bnd_OBB ( const Bnd_Box theBox)
inline

Constructor to create OBB from AABB.

Member Function Documentation

◆ Add() [1/2]

void Bnd_OBB::Add ( const Bnd_OBB theOther)

Rebuilds this in order to include all previous objects (which it was created from) and theOther.

◆ Add() [2/2]

void Bnd_OBB::Add ( const gp_Pnt theP)

Rebuilds this in order to include all previous objects (which it was created from) and theP.

◆ Center()

const gp_XYZ& Bnd_OBB::Center ( ) const
inline

Returns the center of OBB.

◆ Enlarge()

void Bnd_OBB::Enlarge ( const Standard_Real  theGapAdd)
inline

Enlarges the box with the given value.

◆ GetVertex()

Standard_Boolean Bnd_OBB::GetVertex ( gp_Pnt  theP[8]) const
inline

Returns the array of vertices in <this>. The local coordinate of the vertex depending on the index of the array are follow: Index == 0: (-XHSize(), -YHSize(), -ZHSize()) Index == 1: ( XHSize(), -YHSize(), -ZHSize()) Index == 2: (-XHSize(), YHSize(), -ZHSize()) Index == 3: ( XHSize(), YHSize(), -ZHSize()) Index == 4: (-XHSize(), -YHSize(), ZHSize()) Index == 5: ( XHSize(), -YHSize(), ZHSize()) Index == 6: (-XHSize(), YHSize(), ZHSize()) Index == 7: ( XHSize(), YHSize(), ZHSize()).

◆ IsAABox()

Standard_Boolean Bnd_OBB::IsAABox ( ) const
inline

Returns TRUE if the box is axes aligned.

◆ IsCompletelyInside()

Standard_Boolean Bnd_OBB::IsCompletelyInside ( const Bnd_OBB theOther) const

Check if the theOther is completely inside *this.

◆ IsOut() [1/2]

Standard_Boolean Bnd_OBB::IsOut ( const Bnd_OBB theOther) const

Check if the box do not interfere the other box.

◆ IsOut() [2/2]

Standard_Boolean Bnd_OBB::IsOut ( const gp_Pnt theP) const

Check if the point is inside of <this>.

◆ IsVoid()

Standard_Boolean Bnd_OBB::IsVoid ( ) const
inline

Checks if the box is empty.

◆ ProcessOnePoint()

void Bnd_OBB::ProcessOnePoint ( const gp_Pnt theP)
inlineprotected

◆ ReBuild()

void Bnd_OBB::ReBuild ( const TColgp_Array1OfPnt theListOfPoints,
const TColStd_Array1OfReal theListOfTolerances = 0 
)

Created new OBB covering every point in theListOfPoints. Tolerance of every such point is set by *theListOfTolerances array. If this array is not void (not null-pointer) then the resulted Bnd_OBB will be enlarged using tolerances of points lying on the box surface.

◆ SetAABox()

void Bnd_OBB::SetAABox ( const Standard_Boolean theFlag)
inline

Sets the flag for axes aligned box.

◆ SetCenter()

void Bnd_OBB::SetCenter ( const gp_Pnt theCenter)
inline

Sets the center of OBB.

◆ SetVoid()

void Bnd_OBB::SetVoid ( )
inline

Clears this box.

◆ SetXComponent()

void Bnd_OBB::SetXComponent ( const gp_Dir theXDirection,
const Standard_Real  theHXSize 
)
inline

Sets the X component of OBB - direction and size.

◆ SetYComponent()

void Bnd_OBB::SetYComponent ( const gp_Dir theYDirection,
const Standard_Real  theHYSize 
)
inline

Sets the Y component of OBB - direction and size.

◆ SetZComponent()

void Bnd_OBB::SetZComponent ( const gp_Dir theZDirection,
const Standard_Real  theHZSize 
)
inline

Sets the Z component of OBB - direction and size.

◆ SquareExtent()

Standard_Real Bnd_OBB::SquareExtent ( ) const
inline

Returns square diagonal of this box.

◆ XDirection()

const gp_XYZ& Bnd_OBB::XDirection ( ) const
inline

Returns the X Direction of OBB.

◆ XHSize()

Standard_Real Bnd_OBB::XHSize ( ) const
inline

Returns the X Dimension of OBB.

◆ YDirection()

const gp_XYZ& Bnd_OBB::YDirection ( ) const
inline

Returns the Y Direction of OBB.

◆ YHSize()

Standard_Real Bnd_OBB::YHSize ( ) const
inline

Returns the Y Dimension of OBB.

◆ ZDirection()

const gp_XYZ& Bnd_OBB::ZDirection ( ) const
inline

Returns the Z Direction of OBB.

◆ ZHSize()

Standard_Real Bnd_OBB::ZHSize ( ) const
inline

Returns the Z Dimension of OBB.


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