MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur2d_optimisation.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 //####// mailleur2d_optimisation.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 #ifndef mailleur2d_optimisationH
24 #define mailleur2d_optimisationH
25 
26 
27 
28 
29 
30 
31 
32 #include "mailleur.h"
33 #include "mg_definition.h"
34 #include <map>
35 
36 
37 class MG_MAILLAGE;
38 class MG_FACE;
39 class M3D_TRIANGLE;
40 class MG_NOEUD;
42 class MG_VOLUME;
43 class MG_COQUE;
44 class MG_SEGMENT;
45 class MG_TRIANGLE;
46 
47 
49 {
50 public:
51 typedef std::multimap<double,class M3D_TRIANGLE*,std::less<double> > ORDRE_TRIANGLE;
52 typedef std::map<unsigned long,ORDRE_TRIANGLE::iterator,std::less<unsigned long> > ORDRE_TRIANGLE_PARID;
53 
54 MAILLEUR2D_OPTIMISATION(MG_MAILLAGE* mgmai,int niv);
55 virtual ~MAILLEUR2D_OPTIMISATION();
56 virtual void change_niveau_optimisation(int num);
57 virtual int get_niveau_optimisation(void);
58 
59 
60 virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL) {return OK;}; // si on utilise cette methode les triangles doivent être des M3D_TRIANGLE
61 virtual void optimise(MG_FACE* mgface); // si on utilise cette methode les triangles doivent être des M3D_TRIANGLE
62 virtual void optimise(MG_VOLUME* mgvolume); // methode toujours valable
63 virtual void optimise(MG_COQUE* mgcoque);// methode toujours valable
64 protected:
65 virtual void ajouter_ordre_tri(M3D_TRIANGLE* tri,int num=1);
66 virtual void supprimer_ordre_tri(M3D_TRIANGLE* tri);
68 virtual void optimise_avec_calcul_uv(MG_FACE* mgface);
69 virtual int bouge_point(MG_FACE* mgface,MG_NOEUD* mg_noeud,double& crit,double &u,double& v,double& x,double& y, double& z);
70 virtual int inverse_diagonale(MG_FACE* face,int num,M3D_TRIANGLE* tri,M3D_TRIANGLE** autretri,double &crit,MG_NOEUD** tabnoeudres);
71 virtual void reinit(void);
73 
74 virtual MG_SEGMENT* cree_segment(class MG_FACE* mgface,MG_NOEUD* noeud1,MG_NOEUD* noeud2,int origine);
75 virtual M3D_TRIANGLE* cree_triangle(class MG_FACE* mgface,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_SEGMENT* segment1,MG_SEGMENT* segment2,MG_SEGMENT* segment3,int origine);
76 virtual M3D_TRIANGLE* insere_triangle(class MG_FACE* mgface,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,int origine);
77 void operateur_inverse_diagonale(int phase,MG_FACE* mgface,M3D_TRIANGLE** tri);
78 void operateur_bouge_de_point(int phase,MG_FACE* mgface,M3D_TRIANGLE* tri);
79 
83 double periode_u;
84 double periode_v;
85 };
86 
87 
88 
89 
90 #endif
ORDRE_TRIANGLE_PARID lst_triid[2]
virtual int get_niveau_optimisation(void)
virtual M3D_TRIANGLE * cree_triangle(class MG_FACE *mgface, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_SEGMENT *segment1, MG_SEGMENT *segment2, MG_SEGMENT *segment3, int origine)
virtual MG_SEGMENT * cree_segment(class MG_FACE *mgface, MG_NOEUD *noeud1, MG_NOEUD *noeud2, int origine)
virtual void optimise(MG_FACE *mgface)
std::multimap< double, class M3D_TRIANGLE *, std::less< double > > ORDRE_TRIANGLE
virtual M3D_TRIANGLE * insere_triangle(class MG_FACE *mgface, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, int origine)
virtual int bouge_point(MG_FACE *mgface, MG_NOEUD *mg_noeud, double &crit, double &u, double &v, double &x, double &y, double &z)
virtual void supprimer_ordre_tri(M3D_TRIANGLE *tri)
void operateur_bouge_de_point(int phase, MG_FACE *mgface, M3D_TRIANGLE *tri)
virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
virtual void ajouter_ordre_tri(M3D_TRIANGLE *tri, int num=1)
virtual void optimise_avec_calcul_uv(MG_FACE *mgface)
OT_DECALAGE_PARAMETRE * decalage
MAILLEUR2D_OPTIMISATION(MG_MAILLAGE *mgmai, int niv)
virtual void change_niveau_optimisation(int num)
virtual int inverse_diagonale(MG_FACE *face, int num, M3D_TRIANGLE *tri, M3D_TRIANGLE **autretri, double &crit, MG_NOEUD **tabnoeudres)
void operateur_inverse_diagonale(int phase, MG_FACE *mgface, M3D_TRIANGLE **tri)
std::map< unsigned long, ORDRE_TRIANGLE::iterator, std::less< unsigned long > > ORDRE_TRIANGLE_PARID
const int OK
Definition: mg_definition.h:38