X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHUtils%2FSMESH_Tree.hxx;h=7be28394398a5e9c6eb660f0d1fba8306f2650fa;hb=HEAD;hp=eb7b2b864886bdf06190f7816b44535eb287da82;hpb=7a65c9fad427b1ccba6b9ccae612296e5092a324;p=modules%2Fsmesh.git diff --git a/src/SMESHUtils/SMESH_Tree.hxx b/src/SMESHUtils/SMESH_Tree.hxx index eb7b2b864..f13e8a692 100644 --- a/src/SMESHUtils/SMESH_Tree.hxx +++ b/src/SMESHUtils/SMESH_Tree.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -31,6 +31,8 @@ #include "SMESH_Utils.hxx" +const double theEnlargeFactor = 1. + 1e-10; + //================================================================================ // Data limiting the tree height struct SMESH_TreeLimit { @@ -98,6 +100,9 @@ protected: // Allocate a bndbox according to childIndex. childIndex is zero based virtual box_type* newChildBox(int childIndex) const = 0; + // Change size of a box by a factor; each dimension changes independently of others + virtual void enlargeByFactor( box_type* box, double factor ) const = 0; + // Fill in data of the children virtual void buildChildrenData() = 0; @@ -138,8 +143,8 @@ SMESH_Tree::SMESH_Tree (SMESH_TreeLimit* limit): myFather(0), myIsLeaf( false ), myLimit( limit ), - myLevel(0), - myBox(0) + myBox(0), + myLevel(0) { //if ( !myLimit ) myLimit = new SMESH_TreeLimit(); } @@ -157,6 +162,7 @@ void SMESH_Tree::compute() { if ( !myLimit ) myLimit = new SMESH_TreeLimit(); myBox = buildRootBox(); + enlargeByFactor( myBox, theEnlargeFactor ); if ( myLimit->myMinBoxSize > 0. && maxSize() <= myLimit->myMinBoxSize ) myIsLeaf = true; else @@ -205,13 +211,13 @@ void SMESH_Tree::buildChildren() myChildren = new SMESH_Tree*[NB_CHILDREN]; // get the whole model size - double rootSize = 0; - { - SMESH_Tree* root = this; - while ( root->myLevel > 0 ) - root = root->myFather; - rootSize = root->maxSize(); - } + // double rootSize = 0; + // { + // SMESH_Tree* root = this; + // while ( root->myLevel > 0 ) + // root = root->myFather; + // rootSize = root->maxSize(); + // } for (int i = 0; i < NB_CHILDREN; i++) { // The child is of the same type than its father (For instance, a SMESH_OctreeNode) @@ -224,7 +230,7 @@ void SMESH_Tree::buildChildren() myChildren[i]->myLimit = myLimit; myChildren[i]->myLevel = myLevel + 1; myChildren[i]->myBox = newChildBox( i ); - myChildren[i]->myBox->Enlarge( rootSize * 1e-10 ); + enlargeByFactor( myChildren[i]->myBox, theEnlargeFactor ); if ( myLimit->myMinBoxSize > 0. && myChildren[i]->maxSize() <= myLimit->myMinBoxSize ) myChildren[i]->myIsLeaf = true; } @@ -265,14 +271,14 @@ int SMESH_Tree::getHeight(const bool full) const if ( isLeaf() ) return 1; - int heigth = 0; + int height = 0; for (int i = 0; igetHeight( false ); - if ( h > heigth ) - heigth = h; + if ( h > height ) + height = h; } - return heigth + 1; + return height + 1; } #endif