MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur3d.cpp
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 //####// mailleur3d.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 
26 
27 #include "tpl_set.h"
28 #include "mailleur3d.h"
29 #include "m3d_triangle.h"
30 #include "mg_gestionnaire.h"
32 
33 
34 
35 
36 MAILLEUR3D::MAILLEUR3D(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,FCT_TAILLE* fct_taille,bool save,MG_VOLUME* mgvol,int destruction):MAILLEUR(save),mg_maillage(mgmai),mg_geometrie(mggeo),mg_volume(mgvol),metrique(fct_taille),activelog(0),niveau_optimisation(2),type_mailleur(MAGIC::MAILLEURFRONTALETAT::FRONTAL),typedestruction(destruction)
37 {
38 strcpy(nomfichierdbg,"mailleurautomatique.magicdbg");
39 }
40 
41 
42 MAILLEUR3D::MAILLEUR3D(FCT_TAILLE *metri,MG_MAILLAGE* mgmai,OT_CPU* comp,int destruction):MAILLEUR(false,comp),metrique(metri),type_mailleur(MAGIC::MAILLEURFRONTALETAT::OCTAL),mg_maillage(mgmai),coef(2.),typedestruction(destruction)
43 {
44 strcpy(nomfichierdbg,"mailleurautomatique.magicdbg");
45 }
46 
47 
49 {
50 }
51 
52 
53 
54 
56 {
58  {
59  if (mg_volume!=NULL)
60  {
61  if(maille(mg_volume)==FAIL) return FAIL;
62  }
63  else
64  {
66  if (mggt!=NULL)
67  {
68  std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
69  for(MG_ELEMENT_TOPOLOGIQUE* ele=mggt->get_premier(it);ele!=NULL;ele=mggt->get_suivant(it))
70  {
71  lst.ajouter(ele);
72  ele->get_topologie_sousjacente(&lst);
73  }
74  }
75  int nb_vol=mg_geometrie->get_nb_mg_volume();
76  for (int i=0;i<nb_vol;i++)
77  {
79  if (mggt!=NULL)
80  if (lst.existe(mgvol)==0) continue;
81  if(maille(mgvol)==FAIL) return FAIL;
82  }
83  }
84  }
86  {
87  if(maille(metrique)==FAIL) return FAIL;
88  }
89 return OK;
90 }
91 
92 
93 
95 {
96  cree_ntree();
98  affiche((char*)" Construction du front");
99  initialise_front(mgvol);
100  if (lsttri!=NULL) insere_contrainte_triangle(mgvol,lsttri);
101  if (lsttet!=NULL) insere_contrainte_tetra(mgvol,lsttet);
102  affiche((char*)" Progression du front");
103  if(progresse_front(mgvol)==FAIL)
104  {
105  delete ntree_de_front;
106  return FAIL;
107  }
108  affiche((char*)" Construction du maillage final");
110  affiche((char*)" Optimisation du maillage final");
113  opt.optimise(mgvol);
114  delete ntree_de_front;
115  return OK;
116 }
117 
118 
120 {
121  BOITE_3D boite=metrique->get_boite_3D();
122  double xmin=boite.get_xmin();
123  double ymin=boite.get_ymin();
124  double zmin=boite.get_zmin();
125  double xmax=boite.get_xmax();
126  double ymax=boite.get_ymax();
127  double zmax=boite.get_zmax();
129  ntree_de_front->initialiser(*metrique,xmin,ymin,zmin,xmax,ymax,zmax);
130 }
131 
133 {
134 cree_front(mgvol);
136 }
137 
139 {
140  int nbcoq=mgvol->get_nb_mg_coquille();
141  for (int i=0;i<nbcoq;i++)
142  {
143  MG_COQUILLE* mgcoq=mgvol->get_mg_coquille(i);
144  int nbcoface=mgcoq->get_nb_mg_coface();
145  for (int j=0;j<nbcoface;j++)
146  {
147  MG_COFACE* coface=mgcoq->get_mg_coface(j);
148  MG_FACE* mgface=coface->get_face();
149 
150  TPL_SET<MG_ELEMENT_MAILLAGE*> * lien_maillage = mgface->get_lien_maillage();
152  MG_ELEMENT_MAILLAGE* element;
153  for (element = lien_maillage->get_premier(it); element; element = lien_maillage->get_suivant(it) )
154  {
155  MG_TRIANGLE* mgtri=(MG_TRIANGLE*)element;
156  MG_TRIANGLE* tritemp=mg_maillage->get_mg_triangleid(mgtri->get_id());
157  if (tritemp==NULL) continue;
160  }
161  }
162  }
163 }
165 {
166  for (int l=0;l<11;l++)
167  {
168  int nb_front=get_nb_front(front_courant[l]);
169  FRONT::iterator it;
171  {
172  //MG_FRONT_3D* ft=get_front(front_courant[l],i);
173  MG_NOEUD* mgnoeud1=ft->get_noeud1();
174  MG_NOEUD* mgnoeud2=ft->get_noeud2();
175  MG_NOEUD* mgnoeud3=ft->get_noeud3();
176  ft->changer_front_voisin(NULL,0);
177  ft->changer_front_voisin(NULL,1);
178  ft->changer_front_voisin(NULL,2);
179  for (int j=0;j<mgnoeud1->get_lien_triangle()->get_nb();j++)
180  for (int k=0;k<mgnoeud2->get_lien_triangle()->get_nb();k++)
181  {
182  M3D_TRIANGLE* tri1=(M3D_TRIANGLE*)mgnoeud1->get_lien_triangle()->get(j);
183  M3D_TRIANGLE* tri2=(M3D_TRIANGLE*)mgnoeud2->get_lien_triangle()->get(k);
184  if (tri1==tri2)
186  if (tri1->get_mgfront()!=ft)
187  {
188  MG_FRONT_3D* ft2=tri1->get_mgfront();
189  if (ft->get_front_voisin(0)==NULL)
190  {
191  ft->changer_front_voisin(ft2,0);
192  ft->changer_angle_voisin(angle_front(ft,ft2),0);
193  }
194  else
195  {
196  double angle=angle_front(ft,ft2);
197  if (angle<ft->get_angle_voisin(0))
198  {
199  ft->changer_front_voisin(ft2,0);
200  ft->changer_angle_voisin(angle,0);
201  }
202  }
203  }
204  }
205  for (int j=0;j<mgnoeud1->get_lien_triangle()->get_nb();j++)
206  for (int k=0;k<mgnoeud3->get_lien_triangle()->get_nb();k++)
207  {
208  M3D_TRIANGLE* tri1=(M3D_TRIANGLE*)mgnoeud1->get_lien_triangle()->get(j);
209  M3D_TRIANGLE* tri2=(M3D_TRIANGLE*)mgnoeud3->get_lien_triangle()->get(k);
210  if (tri1==tri2)
212  if (tri1->get_mgfront()!=ft)
213  {
214  MG_FRONT_3D* ft2=tri1->get_mgfront();
215  if (ft->get_front_voisin(1)==NULL)
216  {
217  ft->changer_front_voisin(ft2,1);
218  ft->changer_angle_voisin(angle_front(ft,ft2),1);
219  }
220  else
221  {
222  double angle=angle_front(ft,ft2);
223  if (angle<ft->get_angle_voisin(1))
224  {
225  ft->changer_front_voisin(ft2,1);
226  ft->changer_angle_voisin(angle,1);
227  }
228  }
229  }
230  }
231  for (int j=0;j<mgnoeud2->get_lien_triangle()->get_nb();j++)
232  for (int k=0;k<mgnoeud3->get_lien_triangle()->get_nb();k++)
233  {
234  M3D_TRIANGLE* tri1=(M3D_TRIANGLE*)mgnoeud2->get_lien_triangle()->get(j);
235  M3D_TRIANGLE* tri2=(M3D_TRIANGLE*)mgnoeud3->get_lien_triangle()->get(k);
236  if (tri1==tri2)
238  if (tri1->get_mgfront()!=ft)
239  {
240  MG_FRONT_3D* ft2=tri1->get_mgfront();
241  if (ft->get_front_voisin(2)==NULL)
242  {
243  ft->changer_front_voisin(ft2,2);
244  ft->changer_angle_voisin(angle_front(ft,ft2),2);
245  }
246  else
247  {
248  double angle=angle_front(ft,ft2);
249  if (angle<ft->get_angle_voisin(2))
250  {
251  ft->changer_front_voisin(ft2,2);
252  ft->changer_angle_voisin(angle,2);
253  }
254  }
255  }
256  }
257  if ( (ft->get_front_voisin(0)==NULL) || (ft->get_front_voisin(1)==NULL)|| (ft->get_front_voisin(2)==NULL))
258  refresh();
259  }
260 
261  }
262 
263 }
264 
265 
266 
267 MG_FRONT_3D* MAILLEUR3D::ajouter_front_courant(int numero_front,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_TRIANGLE* triangle)
268 {
269  int numfront;
270  if (numero_front==MAGIC::MAILLEURFRONTALETAT::NONFORCE)
271  {
272  numfront=(int)(triangle->get_longueur()/distance_maximale*10.);
273  if (numfront>10) numfront=10;
274  }
275  else numfront=numero_front;
276  MG_FRONT_3D* mgfront;
277  if (numfront>11) mgfront=ajouter_front(front_attente,noeud1,noeud2,noeud3,triangle);
278  else mgfront=ajouter_front(front_courant[numfront],noeud1,noeud2,noeud3,triangle);
279  mgfront->changer_numero_front(numfront);
281  {
282  M3D_TRIANGLE* mtri=(M3D_TRIANGLE*)triangle;
284  mtri->change_mgfront(mgfront);
285  }
286  return mgfront;
287 }
288 
290 {
291  MG_FRONT_3D* ft=new MG_FRONT_3D(noeud1,noeud2,noeud3,triangle);
292  ajouter_front(front,ft);
293  ntree_de_front->inserer(ft);
294  return ft;
295 }
296 
298 {
299  std::pair<const double,MG_FRONT_3D*> tmp(ft->get_triangle()->get_longueur(),ft);
300  front.insert(tmp);
301 }
302 
304 {
305  if (front.size()==0) return NULL;
306  FRONT::iterator it=front.begin();
307  return (*it).second;
308 }
309 
310 MG_FRONT_3D* MAILLEUR3D::get_premier_front(FRONT& front,FRONT::iterator &it)
311 {
312  if (front.size()==0) return NULL;
313  it=front.begin();
314  return (*it).second;
315 }
316 
317 MG_FRONT_3D* MAILLEUR3D::get_suivant_front(FRONT& front,FRONT::iterator &it)
318 {
319  it++;
320  if (it==front.end()) return NULL;
321  return (*it).second;
322 }
323 
324 
325 unsigned int MAILLEUR3D::get_nb_front(FRONT& front)
326 {
327  return front.size();
328 }
329 
331 {
332 
333  return front_courant[0].size()+front_courant[1].size()+front_courant[2].size()+front_courant[3].size()+front_courant[4].size()+front_courant[5].size()+front_courant[6].size()+front_courant[7].size()+front_courant[8].size()+front_courant[9].size()+front_courant[10].size();
334 }
335 
337 {
339  delete ft;
340 }
341 
343 {
345  int numfront=ft->get_numero_front();
346  FRONT* front_original;
348  front_original=&front_attente;
349  else
350  front_original=front_courant+numfront;
351  FRONT::iterator j=front_original->lower_bound(ft->get_triangle()->get_longueur());
352  while (ft!=(*j).second) j++;
353  front_original->erase(j);
354  MG_TRIANGLE* mgtri=ft->get_triangle();
356  {
357  M3D_TRIANGLE* m3dtri=(M3D_TRIANGLE*)mgtri;
359  m3dtri->change_mgfront(NULL);
360  }
361 }
362 
364 {
366  int numfront=ft->get_numero_front();
367  FRONT* front_original;
369  front_original=&front_attente;
370  else
371  front_original=front_courant+numfront;
372  FRONT::iterator j=front_original->lower_bound(ft->get_triangle()->get_longueur());
373  while (ft!=(*j).second) j++;
374  front_original->erase(j);
375  MG_TRIANGLE* mgtri=ft->get_triangle();
377  {
378  M3D_TRIANGLE* m3dtri=(M3D_TRIANGLE*)mgtri;
380  m3dtri->change_mgfront(NULL);
381  }
382  delete ft;
383 }
384 
385 void MAILLEUR3D::echange_de_front(FRONT& front_original,FRONT& front_destination,MG_FRONT_3D* ft)
386 {
387  FRONT::iterator j=front_original.lower_bound(ft->get_triangle()->get_longueur());
388  while (ft!=(*j).second) j++;
389  front_original.erase(j);
390  ajouter_front(front_destination,ft);
391 }
392 
394 {
395  int numfront;
397  {
398  numfront=(int)(ft->get_triangle()->get_longueur()/distance_maximale*10.);
399  if (numfront>10) numfront=10;
400  }
402  else numfront=num;
403  if (numfront>10) numfront=MAGIC::MAILLEURFRONTALETAT::ATTENTE;
404  FRONT* front_original;
405  int num_front_original=ft->get_numero_front();
406  if (num_front_original==MAGIC::MAILLEURFRONTALETAT::ATTENTE)
407  front_original=&front_attente;
408  else
409  front_original=front_courant+num_front_original;
410  FRONT* front_destination;
412  front_destination=&front_attente;
413  else
414  front_destination=front_courant+numfront;
415 
416 
417 
418  FRONT::iterator j=front_original->lower_bound(ft->get_triangle()->get_longueur());
419  while (ft!=(*j).second) j++;
420  front_original->erase(j);
421  ft->changer_numero_front(numfront);
422  ajouter_front(*front_destination,ft);
423 
424 }
425 
426 
427 void MAILLEUR3D::swap_front(FRONT& front_original,FRONT& front_destination)
428 {
429  front_original.swap(front_destination);
430 }
431 
432 
433 
435 {
436  int num=-1;
437  if (front_courant[0].size()>0) num=0;
438  else if (front_courant[1].size()>0) num=1;
439  else if (front_courant[2].size()>0) num=2;
440  else if (front_courant[3].size()>0) num=3;
441  else if (front_courant[4].size()>0) num=4;
442  else if (front_courant[5].size()>0) num=5;
443  else if (front_courant[6].size()>0) num=6;
444  else if (front_courant[7].size()>0) num=7;
445  else if (front_courant[8].size()>0) num=8;
446  else if (front_courant[9].size()>0) num=9;
447  else if (front_courant[10].size()>0) num=10;
448  return num;
449 }
450 
451 
452 
453 void MAILLEUR3D::active_log(char* nomfile)
454 {
455  activelog=1;
456  nomlog=nomfile;
457 }
458 
460 {
461  activelog=0;
462 }
463 
465 {
467 }
468 
470 {
471  return niveau_optimisation;
472 }
473 
474 
FCT_TAILLE::get_boite_3D
virtual BOITE_3D get_boite_3D(void)=0
MAILLEUR3D::change_niveau_optimisation
virtual void change_niveau_optimisation(int num)
Definition: mailleur3d.cpp:464
MAILLEUR3D::active_log
virtual void active_log(char *nomfile)
Definition: mailleur3d.cpp:453
MAILLEUR3D::type_mailleur
int type_mailleur
Definition: mailleur3d.h:171
MAILLEUR3D::get_suivant_front
virtual MG_FRONT_3D * get_suivant_front(FRONT &front, FRONT::iterator &it)
Definition: mailleur3d.cpp:317
MG_VOLUME::get_nb_mg_coquille
virtual int get_nb_mg_coquille(void)
Definition: mg_volume.cpp:65
MAILLEUR3D::ajouter_front_courant
virtual MG_FRONT_3D * ajouter_front_courant(int numero_front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_TRIANGLE *triangle)
Definition: mailleur3d.cpp:267
MG_TRIANGLE::get_longueur
virtual double get_longueur(void)
Definition: mg_triangle.cpp:172
MAILLEUR3D::premier_front_courant
virtual int premier_front_courant(void)
Definition: mailleur3d.cpp:434
gestionversion.h
FCT_TAILLE::get_valeur_maximale
virtual double get_valeur_maximale(int num=0)=0
MAGIC_AFFICHE::active_affichage
virtual void active_affichage(fonction_affiche *fonc)
Definition: magic_affiche.cpp:49
MG_GROUPE_TOPOLOGIQUE::get_suivant
virtual MG_ELEMENT_TOPOLOGIQUE * get_suivant(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
Definition: mg_groupe_topologique.cpp:106
MG_FRONT_3D
Definition: CAD4FE_mg_front_3d.h:42
TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * >
FAIL
const int FAIL
Definition: mg_definition.h:39
BOITE_3D::get_xmin
double get_xmin(void)
Definition: ot_boite_3d.cpp:104
MAILLEUR3D::get_premier_front
virtual MG_FRONT_3D * get_premier_front(FRONT &front)
Definition: mailleur3d.cpp:303
mg_gestionnaire.h
MG_NOEUD::get_lien_triangle
TPL_LISTE_ENTITE< class MG_TRIANGLE * > * get_lien_triangle(void)
Definition: mg_noeud.cpp:153
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
MAILLEUR3D_OPTIMISATION
Definition: mailleur3d_optimisation.h:43
MAILLEUR3D::get_niveau_optimisation
virtual int get_niveau_optimisation(void)
Definition: mailleur3d.cpp:469
MAGIC::MAILLEURFRONTALETAT::NONFORCE
@ NONFORCE
Definition: mg_definition.h:114
OT_CPU
Definition: ot_cpu.h:31
TPL_SET< MG_ELEMENT_MAILLAGE * >
MAILLEUR3D::echange_de_front
virtual void echange_de_front(FRONT &front_original, FRONT &front_destination, MG_FRONT_3D *ft)
Definition: mailleur3d.cpp:385
MAILLEUR3D::supprimer_front_en_reculant
virtual void supprimer_front_en_reculant(MG_FRONT_3D *ft)
Definition: mailleur3d.cpp:363
MAILLEUR::refresh
void refresh(void)
Definition: mailleur.cpp:49
MAILLEUR3D::front_attente
FRONT front_attente
Definition: mailleur3d.h:174
M3D_TRIANGLE::change_etat_front
virtual void change_etat_front(int num)
Definition: m3d_triangle.cpp:63
M3D_TRIANGLE
Definition: m3d_triangle.h:31
MAILLEUR3D::~MAILLEUR3D
virtual ~MAILLEUR3D()
Definition: mailleur3d.cpp:48
MG_ELEMENT_MAILLAGE
Definition: mg_element_maillage.h:38
m3d_triangle.h
MAILLEUR3D::insere_contrainte_tetra
virtual void insere_contrainte_tetra(MG_VOLUME *mgvol, TPL_LISTE_ENTITE< MG_TETRA * > *lsttet)
Definition: mailleur3d_outil.cpp:782
MG_COFACE::get_face
virtual MG_FACE * get_face(void)
Definition: mg_coface.cpp:58
MAILLEUR3D::maille
virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur3d.cpp:55
TPL_SET::get_premier
X get_premier(ITERATEUR &it)
Definition: tpl_set.h:99
TPL_OCTREE::supprimer
virtual void supprimer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
Definition: tpl_octree.h:918
M3D_TRIANGLE::get_mgfront
virtual class MG_FRONT_3D * get_mgfront(void)
Definition: m3d_triangle.cpp:78
MAILLEUR3D::recherche_voisin_front
virtual void recherche_voisin_front(void)
Definition: mailleur3d.cpp:164
MAGIC::MAILLEURFRONTALETAT::FRONT_NONACTIF
@ FRONT_NONACTIF
Definition: mg_definition.h:109
TPL_MAP_ENTITE::existe
virtual int existe(X x)
Definition: tpl_map_entite.h:61
MAGIC_AFFICHE::affiche
virtual void affiche(char *mess)
Definition: magic_affiche.cpp:43
MAILLEUR3D::mg_maillage
MG_MAILLAGE * mg_maillage
Definition: mailleur3d.h:167
MG_COFACE::get_orientation
virtual int get_orientation(void)
Definition: mg_coface.cpp:69
OK
const int OK
Definition: mg_definition.h:38
MG_TRIANGLE
Definition: mg_triangle.h:38
FCT_TAILLE
Definition: fct_taille.h:30
MG_VOLUME
Definition: mg_volume.h:33
MG_COQUILLE
Definition: mg_coquille.h:34
MG_COFACE
Definition: mg_coface.h:33
TPL_NTREE_FCT< MG_FRONT_3D *, FCT_TAILLE >
MAILLEUR3D::initialise_front
virtual void initialise_front(MG_VOLUME *mgvol)
Definition: mailleur3d.cpp:132
MAILLEUR3D::ajouter_front
virtual MG_FRONT_3D * ajouter_front(FRONT &front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_TRIANGLE *triangle)
Definition: mailleur3d.cpp:289
MAGIC_AFFICHE::affiche2
fonction_affiche * affiche2
Definition: magic_affiche.h:41
MAILLEUR3D::supprimer_front_en_avancant
virtual void supprimer_front_en_avancant(MG_FRONT_3D *ft)
Definition: mailleur3d.cpp:336
MAILLEUR3D::FRONT
std::multimap< double, MG_FRONT_3D *, std::less< double > > FRONT
Definition: mailleur3d.h:76
MAGIC::MAILLEURFRONTALETAT::FRONT_PASSE
@ FRONT_PASSE
Definition: mg_definition.h:109
MAILLEUR3D::distance_maximale
double distance_maximale
Definition: mailleur3d.h:172
MG_VOLUME::get_mg_coquille
virtual MG_COQUILLE * get_mg_coquille(int num)
Definition: mg_volume.cpp:70
MG_ELEMENT_TOPOLOGIQUE::get_lien_maillage
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
Definition: mg_element_topologique.cpp:62
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
TPL_OCTREE::inserer
virtual void inserer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
Definition: tpl_octree.h:897
MAILLEUR3D::front_courant
FRONT front_courant[12]
Definition: mailleur3d.h:173
BOITE_3D::get_zmax
double get_zmax(void)
Definition: ot_boite_3d.cpp:129
BOITE_3D::get_ymin
double get_ymin(void)
Definition: ot_boite_3d.cpp:114
MAILLEUR3D::mg_geometrie
MG_GEOMETRIE * mg_geometrie
Definition: mailleur3d.h:168
MAGIC
Definition: mg_fast_marching.cpp:40
MAILLEUR3D::swap_front
virtual void swap_front(FRONT &front_original, FRONT &front_destination)
Definition: mailleur3d.cpp:427
MAILLEUR3D::MAILLEUR3D
MAILLEUR3D(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, FCT_TAILLE *fct_taille, bool save, MG_VOLUME *mgvol=NULL, int destruction=MAGIC::MAILLEURFRONTALETAT::TOUTDETRUIRE)
Definition: mailleur3d.cpp:36
MAILLEUR3D::metrique
FCT_TAILLE * metrique
Definition: mailleur3d.h:170
MAILLEUR3D::get_nb_front
virtual unsigned int get_nb_front(FRONT &front)
Definition: mailleur3d.cpp:325
BOITE_3D::get_xmax
double get_xmax(void)
Definition: ot_boite_3d.cpp:109
MAILLEUR3D::get_nb_front_courant
virtual unsigned int get_nb_front_courant(void)
Definition: mailleur3d.cpp:330
M3D_TRIANGLE::get_etat_front
virtual int get_etat_front(void)
Definition: m3d_triangle.cpp:67
MAILLEUR3D::progresse_front
virtual int progresse_front(MG_VOLUME *mgvol)
Definition: mailleur3d_front.cpp:62
MG_NOEUD
Definition: mg_noeud.h:41
MAGIC::MAILLEURFRONTALETAT::ATTENTE
@ ATTENTE
Definition: mg_definition.h:114
MG_FRONT_3D::changer_front_voisin
void changer_front_voisin(MG_FRONT_3D *front, int num)
Definition: mg_front_3D.cpp:83
MAILLEUR3D::ntree_de_front
TPL_NTREE_FCT< MG_FRONT_3D *, FCT_TAILLE > * ntree_de_front
Definition: mailleur3d.h:179
MAGIC::MAILLEURFRONTALETAT::OCTAL
@ OCTAL
Definition: mg_definition.h:114
MAILLEUR3D::angle_front
virtual double angle_front(MG_FRONT_3D *ft1, MG_FRONT_3D *ft2)
Definition: mailleur3d_outil.cpp:47
MAILLEUR3D::detruit_element_inactif
virtual void detruit_element_inactif(void)
Definition: mailleur3d_outil.cpp:731
TPL_LISTE_ENTITE::get_nb
virtual int get_nb(void)
Definition: tpl_liste_entite.h:67
MAILLEUR3D::nomlog
std::string nomlog
Definition: mailleur3d.h:177
MG_TRIANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_triangle.cpp:131
MG_FRONT_3D::get_numero_front
int get_numero_front(void)
Definition: mg_front_3D.cpp:135
MAILLEUR3D::niveau_optimisation
int niveau_optimisation
Definition: mailleur3d.h:181
tpl_set.h
TPL_LISTE_ENTITE::get
virtual X get(int num)
Definition: tpl_liste_entite.h:72
BOITE_3D::get_ymax
double get_ymax(void)
Definition: ot_boite_3d.cpp:119
MAILLEUR3D::mg_volume
MG_VOLUME * mg_volume
Definition: mailleur3d.h:169
MAGIC::MAILLEURFRONTALETAT::FRONT_ACTIF
@ FRONT_ACTIF
Definition: mg_definition.h:109
M3D_TRIANGLE::change_mgfront
virtual void change_mgfront(class MG_FRONT_3D *ft)
Definition: m3d_triangle.cpp:73
mailleur3d_optimisation.h
MG_TRIANGLE::get_type_entite
virtual int get_type_entite(void)
Definition: mg_triangle.cpp:119
TPL_MAP_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_map_entite.h:55
MG_GEOMETRIE::get_nb_mg_volume
unsigned int get_nb_mg_volume(void)
Definition: mg_geometrie.cpp:1712
MG_FRONT_3D::get_triangle
MG_TRIANGLE * get_triangle(void)
Definition: mg_front_3D.cpp:73
MG_TRIANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_triangle.cpp:126
BOITE_3D
Definition: ot_boite_3d.h:27
MAGIC::MAILLEURFRONTALETAT::FRONTAL
@ FRONTAL
Definition: mg_definition.h:114
mailleur3d.h
MAILLEUR3D::cree_ntree
virtual void cree_ntree(void)
Definition: mailleur3d.cpp:119
MAGIC_AFFICHE::affichageactif
int affichageactif
Definition: magic_affiche.h:42
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
MG_TRIANGLE::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_triangle.cpp:137
BOITE_3D::get_zmin
double get_zmin(void)
Definition: ot_boite_3d.cpp:124
MAILLEUR3D::insere_contrainte_triangle
virtual void insere_contrainte_triangle(MG_VOLUME *mgvol, TPL_LISTE_ENTITE< MG_TRIANGLE * > *lsttri)
Definition: mailleur3d_outil.cpp:1044
MAILLEUR
Definition: mailleur.h:33
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< MG_TRIANGLE * >
MG_COQUILLE::get_nb_mg_coface
virtual int get_nb_mg_coface(void)
Definition: mg_coquille.cpp:76
MG_COQUILLE::get_mg_coface
virtual MG_COFACE * get_mg_coface(int num)
Definition: mg_coquille.cpp:90
MG_FACE
Definition: mg_face.h:34
MG_GROUPE_TOPOLOGIQUE::get_premier
virtual MG_ELEMENT_TOPOLOGIQUE * get_premier(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
Definition: mg_groupe_topologique.cpp:98
MG_MAILLAGE::get_mg_triangleid
MG_TRIANGLE * get_mg_triangleid(unsigned long num)
Definition: mg_maillage.cpp:772
MG_FRONT_3D::changer_numero_front
void changer_numero_front(int num)
Definition: mg_front_3D.cpp:129
MAILLEUR::nomfichierdbg
char nomfichierdbg[500]
Definition: mailleur.h:54
MAILLEUR3D::activelog
int activelog
Definition: mailleur3d.h:176
TPL_NTREE_FCT::initialiser
virtual void initialiser(B &fonction, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
Definition: tpl_octree.h:1104
MAGIC::TYPE_ENTITE::IDM3D_TRIANGLE
@ IDM3D_TRIANGLE
Definition: mg_definition.h:69
MAILLEUR3D::desactive_log
virtual void desactive_log(void)
Definition: mailleur3d.cpp:459
MAILLEUR3D::cree_front
virtual void cree_front(MG_VOLUME *mgvol)
Definition: mailleur3d.cpp:138
MG_GEOMETRIE::get_mg_volume
MG_VOLUME * get_mg_volume(unsigned int num)
Definition: mg_geometrie.cpp:1683
MAILLEUR3D_OPTIMISATION::optimise
virtual void optimise(MG_VOLUME *mgvol)
Definition: mailleur3d_optimisation.cpp:88
MAILLEUR3D::supprimer_front_en_avancant_sans_delete
virtual void supprimer_front_en_avancant_sans_delete(MG_FRONT_3D *ft)
Definition: mailleur3d.cpp:342
TPL_SET::get_suivant
X get_suivant(ITERATEUR &it)
Definition: tpl_set.h:107