MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
CAD4FE_GlobalEdgeCriteria.h
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// CAD4FE_GlobalEdgeCriteria.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 #ifndef CAD4FE_GlobalEdgeCriteriaH
24 #define CAD4FE_GlobalEdgeCriteriaH
25 
26 #include "CAD4FE_MCT_Platform.h"
27 
28 #include <vector>
29 #include <map>
30 
31 class MG_SEGMENT;
32 class MG_MAILLAGE;
33 namespace CAD4FE {
34 
35 class MCAA;
36 class MCEdge;
37 class MCVertex;
38 class LocalEdgeCriteria;
39 
41 public:
42  typedef std::map <MG_SEGMENT *, LocalEdgeCriteria*> LEC;
43  typedef std::map <MG_SEGMENT *, LocalEdgeCriteria*>::iterator LEC_Iterator;
44  typedef std::map <MG_SEGMENT *, LocalEdgeCriteria*>::const_iterator LEC_CIterator;
45 
48 
49  void Init();
50  void Init(MG_SEGMENT * __seg);
52  bool Delete(MG_SEGMENT * __seg);
53 
54  void ReInit(MG_SEGMENT * __touchingSeg);
55  void Update(MG_SEGMENT * __touchingSeg, bool __reconstructNormalOffsets);
56  void Update(MCEdge * __touchingEdge, bool __reconstructNormalOffsets);
57  void Update(bool __reconstructNormalOffsets);
58 
59  MCEdge * GetEdge();
60 
61  std::vector <LocalEdgeCriteria *> GetLocalEdgeCriteria();
64 
66  void ChangeTopo(GlobalEdgeCriteria * __src);
67 
68  void CheckMCTess();
69 
71  double DeletionScore();
73  double SplitScore(double __splitPoint[3]);
74  static double SplitScore(MCAA * __mcaa, MCVertex * __mcVertex);
75  static double SplitScore(LocalEdgeCriteria * vecEC[2]);
76 
79  double DeletionScore_EdgeLength() const;
80 
82  double GetLength() const;
83 
84  // average value of local criteria regarding meshing problems
86  double DeletionScore_FaceWidth() const;
89 
90 private:
91  void _Update();
92 
96 };
97 
98 }
99 
100 #endif
std::map< MG_SEGMENT *, LocalEdgeCriteria * >::iterator LEC_Iterator
double CollapseToVertexScore(MCVertex **)
LocalEdgeCriteria * CreateLocalEdgeCriteria(MG_SEGMENT *__seg)
double DeletionScore_DeviationAngle() const
deletion score regarding deviation angle problem
double GetLength() const
total length of all local segments
void ReInit(MG_SEGMENT *__touchingSeg)
double DeletionScore()
score of MCT operators
double DeletionScore_FaceWidth() const
deletion score regarding minimum width of face
void Update(MG_SEGMENT *__touchingSeg, bool __reconstructNormalOffsets)
std::vector< LocalEdgeCriteria * > GetLocalEdgeCriteria()
std::map< MG_SEGMENT *, LocalEdgeCriteria * > LEC
std::map< MG_SEGMENT *, LocalEdgeCriteria * >::const_iterator LEC_CIterator
LocalEdgeCriteria * GetFirstLocalEdgeCriteria(LEC_Iterator &__it)
double SplitScore(double __splitPoint[3])
void ChangeTopo(GlobalEdgeCriteria *__src)
LocalEdgeCriteria * GetNextLocalEdgeCriteria(LEC_Iterator &__it)