Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[bos #40649][CEA] Export Structured mesh in CGNS format for 2DQuadrangle and 3DHexahe...
[modules/smesh.git]
/
src
/
SMESHUtils
/
SMESH_Tree.hxx
diff --git
a/src/SMESHUtils/SMESH_Tree.hxx
b/src/SMESHUtils/SMESH_Tree.hxx
index eb7b2b864886bdf06190f7816b44535eb287da82..f13e8a692398bdb566d87e4ea912e3bdd0531085 100644
(file)
--- a/
src/SMESHUtils/SMESH_Tree.hxx
+++ b/
src/SMESHUtils/SMESH_Tree.hxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-20
15 CEA/DEN, EDF R&D
, OPEN CASCADE
+// Copyright (C) 2007-20
24 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
//
// 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"
#include "SMESH_Utils.hxx"
+const double theEnlargeFactor = 1. + 1e-10;
+
//================================================================================
// Data limiting the tree height
struct SMESH_TreeLimit {
//================================================================================
// 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;
// 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;
// Fill in data of the children
virtual void buildChildrenData() = 0;
@@
-138,8
+143,8
@@
SMESH_Tree<BND_BOX,NB_CHILDREN>::SMESH_Tree (SMESH_TreeLimit* limit):
myFather(0),
myIsLeaf( false ),
myLimit( limit ),
myFather(0),
myIsLeaf( false ),
myLimit( limit ),
- my
Level
(0),
- my
Box
(0)
+ my
Box
(0),
+ my
Level
(0)
{
//if ( !myLimit ) myLimit = new SMESH_TreeLimit();
}
{
//if ( !myLimit ) myLimit = new SMESH_TreeLimit();
}
@@
-157,6
+162,7
@@
void SMESH_Tree<BND_BOX,NB_CHILDREN>::compute()
{
if ( !myLimit ) myLimit = new SMESH_TreeLimit();
myBox = buildRootBox();
{
if ( !myLimit ) myLimit = new SMESH_TreeLimit();
myBox = buildRootBox();
+ enlargeByFactor( myBox, theEnlargeFactor );
if ( myLimit->myMinBoxSize > 0. && maxSize() <= myLimit->myMinBoxSize )
myIsLeaf = true;
else
if ( myLimit->myMinBoxSize > 0. && maxSize() <= myLimit->myMinBoxSize )
myIsLeaf = true;
else
@@
-205,13
+211,13
@@
void SMESH_Tree<BND_BOX,NB_CHILDREN>::buildChildren()
myChildren = new SMESH_Tree*[NB_CHILDREN];
// get the whole model size
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)
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<BND_BOX,NB_CHILDREN>::buildChildren()
myChildren[i]->myLimit = myLimit;
myChildren[i]->myLevel = myLevel + 1;
myChildren[i]->myBox = newChildBox( i );
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;
}
if ( myLimit->myMinBoxSize > 0. && myChildren[i]->maxSize() <= myLimit->myMinBoxSize )
myChildren[i]->myIsLeaf = true;
}
@@
-265,14
+271,14
@@
int SMESH_Tree<BND_BOX,NB_CHILDREN>::getHeight(const bool full) const
if ( isLeaf() )
return 1;
if ( isLeaf() )
return 1;
- int heig
th
= 0;
+ int heig
ht
= 0;
for (int i = 0; i<NB_CHILDREN; i++)
{
int h = myChildren[i]->getHeight( false );
for (int i = 0; i<NB_CHILDREN; i++)
{
int h = myChildren[i]->getHeight( false );
- if ( h > heig
th
)
- heig
th
= h;
+ if ( h > heig
ht
)
+ heig
ht
= h;
}
}
- return heig
th
+ 1;
+ return heig
ht
+ 1;
}
#endif
}
#endif