Version: 9.16.0
SMESH_Octree Class Referenceabstract

3D tree of anything. More...

#include <SMESH_Octree.hxx>

Inheritance diagram for SMESH_Octree:

Public Types

typedef SMESH_Tree< Bnd_B3d, 8 > TBaseTree
 
typedef Bnd_B3d box_type
 

Public Member Functions

 SMESH_Octree (SMESH_TreeLimit *limit=0)
 Constructor. More...
 
virtual ~SMESH_Octree ()
 
double maxSize () const
 Compute the bigger dimension of my box. More...
 
void compute ()
 Compute the Tree. More...
 
bool isLeaf () const
 Tell if Tree is a leaf or not An inheriting class can influence it via myIsLeaf protected field. More...
 
int level () const
 
const box_typegetBox () const
 
int getHeight (const bool full=true) const
 Return height of the tree, full or from this level to topest leaf. More...
 

Static Public Member Functions

static int getChildIndex (double x, double y, double z, const gp_XYZ &boxMiddle)
 Return index of a child the given point is in. More...
 
static int nbChildren ()
 

Protected Member Functions

virtual Bnd_B3d * newChildBox (int childIndex) const
 Allocate a bndbox according to childIndex. More...
 
virtual void enlargeByFactor (Bnd_B3d *box, double factor) const
 Change size of a box by a factor; each dimension changes independently of others. More...
 
virtual box_typebuildRootBox ()=0
 
virtual SMESH_TreenewChild () const=0
 
virtual void buildChildrenData ()=0
 
void buildChildren ()
 Build the children boxes and call buildChildrenData() More...
 

Protected Attributes

SMESH_Tree ** myChildren
 
SMESH_TreemyFather
 
bool myIsLeaf
 
const SMESH_TreeLimitmyLimit
 
box_typemyBox
 
int myLevel
 

Detailed Description

3D tree of anything.

Methods to implement in a descendant are:

Member Typedef Documentation

◆ box_type

typedef Bnd_B3d SMESH_Tree< Bnd_B3d , NB_CHILDREN >::box_type
inherited

◆ TBaseTree

typedef SMESH_Tree< Bnd_B3d, 8> SMESH_Octree::TBaseTree

Constructor & Destructor Documentation

◆ SMESH_Octree()

SMESH_Octree::SMESH_Octree ( SMESH_TreeLimit limit = 0)

Constructor.

limit must be provided at tree root construction. limit will be deleted by SMESH_Octree.

◆ ~SMESH_Octree()

virtual SMESH_Octree::~SMESH_Octree ( )
virtual

Member Function Documentation

◆ buildChildren()

void SMESH_Tree< Bnd_B3d , NB_CHILDREN >::buildChildren
protectedinherited

Build the children boxes and call buildChildrenData()

◆ buildChildrenData()

virtual void SMESH_Tree< Bnd_B3d , NB_CHILDREN >::buildChildrenData ( )
protectedpure virtualinherited

◆ buildRootBox()

virtual box_type * SMESH_Tree< Bnd_B3d , NB_CHILDREN >::buildRootBox ( )
protectedpure virtualinherited

◆ compute()

void SMESH_Tree< Bnd_B3d , NB_CHILDREN >::compute
inherited

Compute the Tree.

◆ enlargeByFactor()

void SMESH_Octree::enlargeByFactor ( Bnd_B3d *  box,
double  factor 
) const
protectedvirtual

Change size of a box by a factor; each dimension changes independently of others.

Implements SMESH_Tree< Bnd_B3d, 8 >.

◆ getBox()

const box_type * SMESH_Tree< Bnd_B3d , NB_CHILDREN >::getBox ( ) const
inherited

◆ getChildIndex()

int SMESH_Octree::getChildIndex ( double  x,
double  y,
double  z,
const gp_XYZ &  boxMiddle 
)
static

Return index of a child the given point is in.

Referenced by SMESH_OctreeNode::buildChildrenData(), SMESH_OctreeNode::NodesAround(), and SMESH_OctreeNode::UpdateByMoveNode().

◆ getHeight()

int SMESH_Tree< Bnd_B3d , NB_CHILDREN >::getHeight ( const bool  full = true) const
inherited

Return height of the tree, full or from this level to topest leaf.

◆ isLeaf()

bool SMESH_Tree< Bnd_B3d , NB_CHILDREN >::isLeaf
inherited

Tell if Tree is a leaf or not An inheriting class can influence it via myIsLeaf protected field.

◆ level()

int SMESH_Tree< Bnd_B3d , NB_CHILDREN >::level ( ) const
inherited

◆ maxSize()

◆ nbChildren()

static int SMESH_Tree< Bnd_B3d , NB_CHILDREN >::nbChildren ( )
staticinherited

◆ newChild()

virtual SMESH_Tree * SMESH_Tree< Bnd_B3d , NB_CHILDREN >::newChild ( ) const
protectedpure virtualinherited

◆ newChildBox()

Bnd_B3d * SMESH_Octree::newChildBox ( int  childIndex) const
protectedvirtual

Allocate a bndbox according to childIndex.

childIndex is zero based

Implements SMESH_Tree< Bnd_B3d, 8 >.

References SMESH_Tree< Bnd_B3d, 8 >::getBox().

Field Documentation

◆ myBox

box_type* SMESH_Tree< Bnd_B3d , NB_CHILDREN >::myBox
protectedinherited

◆ myChildren

SMESH_Tree** SMESH_Tree< Bnd_B3d , NB_CHILDREN >::myChildren
protectedinherited

◆ myFather

SMESH_Tree* SMESH_Tree< Bnd_B3d , NB_CHILDREN >::myFather
protectedinherited

◆ myIsLeaf

bool SMESH_Tree< Bnd_B3d , NB_CHILDREN >::myIsLeaf
protectedinherited

◆ myLevel

int SMESH_Tree< Bnd_B3d , NB_CHILDREN >::myLevel
protectedinherited

◆ myLimit

const SMESH_TreeLimit* SMESH_Tree< Bnd_B3d , NB_CHILDREN >::myLimit
protectedinherited