3D tree of anything. More...
#include <SMESH_Octree.hxx>
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 () |
bool | isLeaf () const |
int | level () const |
const box_type * | getBox () const |
int | getHeight (const bool full=true) const |
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_type * | buildRootBox ()=0 |
virtual SMESH_Tree * | newChild () const =0 |
virtual void | buildChildrenData ()=0 |
void | buildChildren () |
Protected Attributes | |
SMESH_Tree ** | myChildren |
SMESH_Tree * | myFather |
bool | myIsLeaf |
const SMESH_TreeLimit * | myLimit |
box_type * | myBox |
int | myLevel |
3D tree of anything.
Methods to implement in a descendant are:
|
inherited |
typedef SMESH_Tree< Bnd_B3d, 8> SMESH_Octree::TBaseTree |
SMESH_Octree::SMESH_Octree | ( | SMESH_TreeLimit * | limit = 0 | ) |
Constructor.
limit must be provided at tree root construction. limit will be deleted by SMESH_Octree.
|
virtual |
|
protectedinherited |
Build the children boxes and call buildChildrenData()
|
protectedpure virtualinherited |
Implemented in SMESH::Controls::ElementsOnShape::OctreeClassifier, and SMESH_OctreeNode.
|
protectedpure virtualinherited |
Implemented in SMESH::Controls::ElementsOnShape::OctreeClassifier, and SMESH_OctreeNode.
|
inherited |
Compute the Tree.
Referenced by SMESH::Controls::ElementsOnShape::OctreeClassifier::OctreeClassifier(), and SMESH_OctreeNode::SMESH_OctreeNode().
|
protectedvirtual |
Change size of a box by a factor; each dimension changes independently of others.
Implements SMESH_Tree< Bnd_B3d, 8 >.
|
inherited |
|
static |
Return index of a child the given point is in.
Referenced by SMESH_OctreeNode::buildChildrenData(), SMESH_OctreeNode::NodesAround(), and SMESH_OctreeNode::UpdateByMoveNode().
|
inherited |
Return height of the tree, full or from this level to topest leaf.
|
inherited |
Tell if Tree is a leaf or not An inheriting class can influence it via myIsLeaf protected field.
Referenced by SMESH_OctreeNode::FindCoincidentNodes(), SMESH_OctreeNode::GetChildrenIterator(), SMESH_OctreeNode::NodesAround(), and SMESH_OctreeNode::UpdateByMoveNode().
|
inherited |
References SMESH_Tree< BND_BOX, NB_CHILDREN >::myLevel.
|
virtual |
Compute the bigger dimension of my box.
Implements SMESH_Tree< Bnd_B3d, 8 >.
References SMESH_Tree< Bnd_B3d, 8 >::getBox().
Referenced by SMESH_ElementSearcherImpl::getTolerance(), SMESH_OctreeNode::NodesAround(), and SMESH_NodeSearcherImpl::SMESH_NodeSearcherImpl().
|
staticinherited |
|
protectedpure virtualinherited |
Implemented in SMESH::Controls::ElementsOnShape::OctreeClassifier, and SMESH_OctreeNode.
|
protectedvirtual |
Allocate a bndbox according to childIndex.
childIndex is zero based
Implements SMESH_Tree< Bnd_B3d, 8 >.
References SMESH_Tree< Bnd_B3d, 8 >::getBox().
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Referenced by SMESH_OctreeNode::getMaxNbNodes().