MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur3d_couche.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_couche.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 #include "mailleur3d_couche.h"
26 #include "mailleur0d.h"
27 #include "mailleur1d.h"
28 #include "mailleur2d.h"
29 #include "mg_gestionnaire.h"
30 #include "mg_geometrie_outils.h"
31 #include "m3d_triangle.h"
32 
33 #include "mailleur3d_couche.h"
34 
35 
36 
37 
38 MAILLEUR3D_COUCHE::MAILLEUR3D_COUCHE(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,FCT_TAILLE* fct_taille):MAILLEUR(false),mai(mgmai),geo(mggeo),metrique(fct_taille)
39 {
40 
41 }
42 
43 
44 
46 {
47 }
48 
49 
50 
51 
53 {
54 return 0;
55 }
56 
57 
58 
60 {
61 if (!vol->est_mince()) return OK;
62 affiche((char*)"Mailleur d'un volume mince en pentaedre");
63 for (int i=0;i<vol->get_nb_face_correspondante();i++)
64  {
65  MG_FACE* face1;
66  MG_FACE* face2;
67  vol->get_face_correspondante(i,&face1,&face2);
70  MG_FACE* face=face1;
72  face->get_topologie_sousjacente(&lst);
74  for (MG_ELEMENT_TOPOLOGIQUE* ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
75  {
76  if (ele->get_dimension()==0) lstsom.ajouter((MG_SOMMET*)ele);
77  if (ele->get_dimension()==1) lstare.ajouter((MG_ARETE*)ele);
78  }
79  char mess[500];
80  sprintf(mess," Maillage de la face de base %lu",face->get_id());
81  affiche(mess);
83  for (MG_SOMMET* som=lstsom.get_premier(its);som!=NULL;som=lstsom.get_suivant(its))
84  {
85  bool dejamaille=false;
86  for (int i=0;i<som->get_lien_maillage()->get_nb();i++)
87  if (mai->get_mg_noeudid(som->get_lien_maillage()->get(i)->get_id())!=NULL) {dejamaille=true;break;}
88  if (!dejamaille)
89  {
90  MAILLEUR0D m0d(mai,mai->get_mg_geometrie(),som);
91  m0d.maille();
92  }
93  }
95  for (MG_ARETE* are=lstare.get_premier(ita);are!=NULL;are=lstare.get_suivant(ita))
96  {
97  bool dejamaille=false;
98  for (int i=0;i<are->get_lien_maillage()->get_nb();i++)
99  if (mai->get_mg_segmentid(are->get_lien_maillage()->get(i)->get_id())!=NULL) {dejamaille=true;break;}
100  if (!dejamaille)
101  {
103  m1d.maille();
104  }
105  }
106  bool dejamaille=false;
107  for (int i=0;i<face->get_lien_maillage()->get_nb();i++)
108  if (mai->get_mg_triangleid(face->get_lien_maillage()->get(i)->get_id())!=NULL) {dejamaille=true;break;}
109  if (!dejamaille)
110  {
113  m2d.maille();
114  }
115  MG_FACE* autreface=face2;
116  sprintf(mess," Maillage de la face extrude %lu",autreface->get_id());
117  affiche(mess);
120  lst.vide();
121  autreface->get_topologie_sousjacente(&lst);
122  for (MG_ELEMENT_TOPOLOGIQUE* ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
123  {
124  if (ele->get_dimension()==0) lstasom.ajouter((MG_SOMMET*)ele);
125  if (ele->get_dimension()==1) lstaare.ajouter((MG_ARETE*)ele);
126  }
128  for (MG_SOMMET* som=lstsom.get_premier(its);som!=NULL;som=lstsom.get_suivant(its))
129  {
130  int num=0;
131  MG_NOEUD* noeud;
132  do
133  {
134  noeud=(MG_NOEUD*)som->get_lien_maillage()->get(num);
135  num++;
136  }
137  while (mai->get_mg_noeudid(noeud->get_id())==NULL);
138  if (noeud->get_nouveau_numero()>0) continue;
139  double *xyz=noeud->get_coord();
140  double xyzproj[3];
141  double xyzprojuv[3];
142  ot.projete(xyz,autreface,xyzprojuv,xyzproj);
144  MG_SOMMET* somop=NULL;
145  double dist=1e300;
146  for (MG_SOMMET* som2=lstasom.get_premier(its2);som2!=NULL;som2=lstasom.get_suivant(its2))
147  {
148  double xyzsom2[3];
149  som2->get_point()->evaluer(xyzsom2);
150  OT_VECTEUR_3D v(xyzproj,xyzsom2);
151  if (v.get_longueur2()<dist) {dist=v.get_longueur2();somop=som2;}
152  }
153  somop->get_point()->evaluer(xyzproj);
154  MG_NOEUD* no1=new MG_NOEUD(somop,xyzproj[0],xyzproj[1],xyzproj[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
155  mai->ajouter_mg_noeud(no1);
156  noeud->change_nouveau_numero(no1->get_id());
157  }
158  for (MG_ARETE* are=lstare.get_premier(ita);are!=NULL;are=lstare.get_suivant(ita))
159  {
161  for (int i=0;i<are->get_lien_maillage()->get_nb();i++)
162  if (mai->get_mg_segmentid(are->get_lien_maillage()->get(i)->get_id())!=NULL) lstseg.ajouter((MG_SEGMENT*)are->get_lien_maillage()->get(i));
163  MG_ARETE *areop=NULL;
164  int sens=0;
165  for (int i=0;i<lstseg.get_nb();i++)
166  {
167  MG_SEGMENT* seg=lstseg.get(i);
168  if (seg->get_nouveau_numero()>0) continue;
169  MG_NOEUD* n1=seg->get_noeud1();
170  MG_NOEUD* n2=seg->get_noeud2();
171  MG_NOEUD *no1,*no2;
172  if (n1->get_nouveau_numero()>0) no1=mai->get_mg_noeudid(n1->get_nouveau_numero());
173  else
174  {
175  no1=projete_noeud_sur_arete(n1,autreface,&areop,lstaare);
176  }
177  if (n2->get_nouveau_numero()>0) no2=mai->get_mg_noeudid(n2->get_nouveau_numero());
178  else
179  {
180  no2=projete_noeud_sur_arete(n2,autreface,&areop,lstaare);
181  }
182  MG_SEGMENT* segnv=insere_segment_orientant(areop,no1,no2,sens);
183  seg->change_nouveau_numero(segnv->get_id());
184  }
185  }
186  int sens=0;
187  for (int i=0;i<face->get_lien_maillage()->get_nb();i++)
188  {
189  MG_TRIANGLE* tri=(MG_TRIANGLE*)face->get_lien_maillage()->get(i);
190  if (mai->get_mg_triangleid(tri->get_id())==NULL) continue;
191  MG_NOEUD* n1=tri->get_noeud1();
192  MG_NOEUD* n2=tri->get_noeud2();
193  MG_NOEUD* n3=tri->get_noeud3();
194  double xyzproj[3];
195  double xyzprojuv[3];
196  MG_NOEUD *no1;
197  MG_NOEUD *no2;
198  MG_NOEUD *no3;
199  if (n1->get_nouveau_numero()<1)
200  {
201  double *xyz=n1->get_coord();
202  ot.projete(xyz,autreface,xyzprojuv,xyzproj);
203  no1=new MG_NOEUD(autreface,xyzproj[0],xyzproj[1],xyzproj[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
204  mai->ajouter_mg_noeud(no1);
205  n1->change_nouveau_numero(no1->get_id());
206  }
207  else no1=mai->get_mg_noeudid(n1->get_nouveau_numero());
208  if (n2->get_nouveau_numero()<1)
209  {
210  double *xyz=n2->get_coord();
211  ot.projete(xyz,autreface,xyzprojuv,xyzproj);
212  no2=new MG_NOEUD(autreface,xyzproj[0],xyzproj[1],xyzproj[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
213  mai->ajouter_mg_noeud(no2);
214  n2->change_nouveau_numero(no2->get_id());
215  }
216  else no2=mai->get_mg_noeudid(n2->get_nouveau_numero());
217  if (n3->get_nouveau_numero()<1)
218  {
219  double *xyz=n3->get_coord();
220  ot.projete(xyz,autreface,xyzprojuv,xyzproj);
221  no3=new MG_NOEUD(autreface,xyzproj[0],xyzproj[1],xyzproj[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
222  mai->ajouter_mg_noeud(no3);
223  n3->change_nouveau_numero(no3->get_id());
224  }
225  else no3=mai->get_mg_noeudid(n3->get_nouveau_numero());
226  MG_TRIANGLE* trinv=insere_triangle_orientant(autreface,no1,no2,no3,sens);
227  tri->change_nouveau_numero(trinv->get_id());
228  }
229  }
230 char mess[255];
231 sprintf(mess," Maillage des autres aretes");
232 affiche(mess);
233 TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> lst,lstbase,lstopp;
235 vol->get_topologie_sousjacente(&lst);
236 for (int i=0;i<vol->get_nb_face_correspondante();i++)
237  {
238  MG_FACE* face1;
239  MG_FACE* face2;
240  vol->get_face_correspondante(i,&face1,&face2);
241  face1->get_topologie_sousjacente(&lstbase);
242  face2->get_topologie_sousjacente(&lstopp);
243  lstbase.ajouter(face1);
244  lstopp.ajouter(face2);
245  }
246 for (MG_ELEMENT_TOPOLOGIQUE* ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
247 if (ele->get_dimension()==1)
248  if (!lstbase.existe(ele))
249  if (!lstopp.existe(ele))
250  {
251  MG_SOMMET* som1=((MG_ARETE*)ele)->get_cosommet1()->get_sommet();
252  MG_SOMMET* som2=((MG_ARETE*)ele)->get_cosommet2()->get_sommet();
253  MG_NOEUD* no1;
254  MG_NOEUD* no2;
255  int num=0;
256  do
257  {
258  no1=(MG_NOEUD*)som1->get_lien_maillage()->get(num);
259  num++;
260  }
261  while (mai->get_mg_noeudid(no1->get_id())==NULL);
262  num=0;
263  do
264  {
265  no2=(MG_NOEUD*)som2->get_lien_maillage()->get(num);
266  num++;
267  }
268  while (mai->get_mg_noeudid(no2->get_id())==NULL);
269  int sens=0;
270  insere_segment_orientant((MG_ARETE*)ele,no1,no2,sens);
271  }
272 sprintf(mess," Maillage des autres faces");
273 affiche(mess);
274 for (MG_ELEMENT_TOPOLOGIQUE* ele=lst.get_premier(it);ele!=NULL;ele=lst.get_suivant(it))
275 if (ele->get_dimension()==2)
276  if (!lstbase.existe(ele))
277  if (!lstopp.existe(ele))
278  {
279  MG_FACE *facetmp=(MG_FACE*)ele;
281  facetmp->get_topologie_sousjacente(&lstf);
283  MG_ELEMENT_TOPOLOGIQUE* eletmp=lstf.premier_commun(lstbase,it1,it2);
284  while (eletmp->get_dimension()!=1)
285  {
286  eletmp=lstf.suivant_commun(lstbase,it1,it2);
287  }
288  MG_ARETE* arebase=(MG_ARETE*) eletmp;
289  int sens=0;
290  for (int i=0;i<arebase->get_lien_maillage()->get_nb();i++)
291  {
292  MG_SEGMENT* seg=(MG_SEGMENT*)arebase->get_lien_maillage()->get(i);
293  if (mai->get_mg_segmentid(seg->get_id())==NULL) continue;
294  MG_NOEUD *no1=seg->get_noeud1();
295  MG_NOEUD *no4=seg->get_noeud2();
298  insere_quadrangle_orientant(facetmp,no1,no2,no3,no4,sens);
299 
300  }
301  }
302 sprintf(mess," Maillage du volume");
303 affiche(mess);
304 for (MG_ELEMENT_TOPOLOGIQUE* ele=lstbase.get_premier(it);ele!=NULL;ele=lstbase.get_suivant(it))
305 if (ele->get_dimension()==2)
306  {
307  MG_FACE *facetmp=(MG_FACE*)ele;
308  for (int i=0;i<facetmp->get_lien_maillage()->get_nb();i++)
309  {
310  MG_TRIANGLE* tri=(MG_TRIANGLE*)facetmp->get_lien_maillage()->get(i);
311  if (mai->get_mg_triangleid(tri->get_id())==NULL) continue;
312  MG_NOEUD *no1=tri->get_noeud1();
313  MG_NOEUD *no2=tri->get_noeud2();
314  MG_NOEUD *no3=tri->get_noeud3();
318  mai->ajouter_mg_penta(vol,no1,no2,no3,no4,no5,no6,MAGIC::ORIGINE::MAILLEUR_AUTO);
319  }
320  }
321 return OK;
322 }
323 
324 
326 {
328  double *xyz=n1->get_coord();
329  double xyzproj[3],xyzprojuv[3];
330  ot.projete(xyz,autreface,xyzprojuv,xyzproj);
331  if (*areop==NULL)
332  {
333  double dist=1e300;
335  for (MG_ARETE* are2=lstaare.get_premier(ita2);are2!=NULL;are2=lstaare.get_suivant(ita2))
336  {
337  double t;
338  are2->inverser(t,xyzproj);
339  double xyztmp[3];
340  are2->evaluer(t,xyztmp);
341  OT_VECTEUR_3D v(xyzproj,xyztmp);
342  if (v.get_longueur2()<dist)
343  {
344  dist=v.get_longueur2();
345  *areop=are2;
346  }
347  }
348  }
349  double t;
350  (*areop)->inverser(t,xyzproj);
351  double newxyz[3];
352  (*areop)->evaluer(t,newxyz);
353  MG_NOEUD* no1=new MG_NOEUD(*areop,newxyz[0],newxyz[1],newxyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
354  mai->ajouter_mg_noeud(no1);
355  n1->change_nouveau_numero(no1->get_id());
356  return no1;
357 }
358 
360 {
361 if (sens==0)
362  {
363  double *xyz1=no1->get_coord();
364  double *xyz2=no2->get_coord();
365  double t;
366  are->inverser(t,xyz1);
367  double dxyz[3];
368  are->deriver(t,dxyz);
369  OT_VECTEUR_3D v1(xyz1,xyz2);
370  OT_VECTEUR_3D v2(dxyz);
371  v1.norme();
372  v2.norme();
373  if (v1*v2>0) sens=1; else sens=-1;
374  }
375 MG_SEGMENT* segnv;
376 if (sens==1) segnv=mai->ajouter_mg_segment(are,no1,no2,MAGIC::ORIGINE::MAILLEUR_AUTO);
377 else if (sens==-1) segnv=mai->ajouter_mg_segment(are,no2,no1,MAGIC::ORIGINE::MAILLEUR_AUTO);
378 return segnv;
379 }
380 
381 
383 {
384 if (sens==0)
385  {
386  double *xyz1=no1->get_coord();
387  double *xyz2=no2->get_coord();
388  double *xyz3=no3->get_coord();
389  double uv[3];
390  face->inverser(uv,xyz1);
391  double nor[3];
392  face->calcul_normale_unitaire(uv,nor);
393  OT_VECTEUR_3D n(nor);
394  OT_VECTEUR_3D v1(xyz1,xyz3);
395  OT_VECTEUR_3D v2(xyz1,xyz2);
396  OT_VECTEUR_3D nn=v1&v2;
397  nn.norme();
398  if (n*nn>0) sens=1; else sens=-1;
399  }
400 
401 
402  MG_NOEUD* nd1;
403  MG_NOEUD* nd2;
404  MG_NOEUD* nd3;
405  if(sens==1) {nd1=no1;nd2=no2;nd3=no3;}
406  else if(sens==-1) {nd1=no1;nd2=no3;nd3=no2;}
407  MG_TRIANGLE* trinv;
408  MG_SEGMENT* mgsegment1=mai->get_mg_segment(no1->get_id(),no2->get_id());
409  MG_SEGMENT* mgsegment2=mai->get_mg_segment(no2->get_id(),no3->get_id());
410  MG_SEGMENT* mgsegment3=mai->get_mg_segment(no3->get_id(),no1->get_id());
411  if (mgsegment1==NULL) mgsegment1=mai->ajouter_mg_segment(face,no1,no2,MAGIC::ORIGINE::MAILLEUR_AUTO);
412  if (mgsegment2==NULL) mgsegment2=mai->ajouter_mg_segment(face,no2,no3,MAGIC::ORIGINE::MAILLEUR_AUTO);
413  if (mgsegment3==NULL) mgsegment3=mai->ajouter_mg_segment(face,no3,no1,MAGIC::ORIGINE::MAILLEUR_AUTO);
414  trinv=new M3D_TRIANGLE(face,no1,no2,no3,mgsegment1,mgsegment2,mgsegment3,MAGIC::ORIGINE::MAILLEUR_AUTO);
415  int resultat=mai->ajouter_mg_triangle(trinv);
416  if (resultat==FAIL)
417  {
418  delete trinv;
419  return NULL;
420  }
421  return trinv;
422 }
423 
425 {
426 if (sens==0)
427  {
428  double *xyz1=no1->get_coord();
429  double *xyz2=no2->get_coord();
430  double *xyz3=no3->get_coord();
431  double uv[3];
432  face->inverser(uv,xyz1);
433  double nor[3];
434  face->calcul_normale_unitaire(uv,nor);
435  OT_VECTEUR_3D n(nor);
436  OT_VECTEUR_3D v1(xyz1,xyz3);
437  OT_VECTEUR_3D v2(xyz1,xyz2);
438  OT_VECTEUR_3D nn=v1&v2;
439  nn.norme();
440  if (n*nn>0) sens=1; else sens=-1;
441  }
442 MG_QUADRANGLE* quadnv;
443 if (sens==1) quadnv=mai->ajouter_mg_quadrangle(face,no1,no2,no3,no4,MAGIC::ORIGINE::MAILLEUR_AUTO);
444 else if (sens==-1) quadnv=mai->ajouter_mg_quadrangle(face,no1,no4,no3,no2,MAGIC::ORIGINE::MAILLEUR_AUTO);
445 return quadnv;
446 }
MAILLEUR3D_COUCHE::~MAILLEUR3D_COUCHE
virtual ~MAILLEUR3D_COUCHE()
Definition: mailleur3d_couche.cpp:45
TPL_MAP_ENTITE::get_premier
virtual X get_premier(ITERATEUR &it)
Definition: tpl_map_entite.h:112
MG_SEGMENT
Definition: mg_segment.h:38
MAILLEUR3D_COUCHE::mai
MG_MAILLAGE * mai
Definition: mailleur3d_couche.h:55
gestionversion.h
MAGIC_AFFICHE::active_affichage
virtual void active_affichage(fonction_affiche *fonc)
Definition: magic_affiche.cpp:49
MG_MAILLAGE::ajouter_mg_segment
MG_SEGMENT * ajouter_mg_segment(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, int origine, double longue=0.0, unsigned long num=0)
Definition: mg_maillage.cpp:565
TPL_MAP_ENTITE
Definition: tpl_map_entite.h:35
FAIL
const int FAIL
Definition: mg_definition.h:39
MG_VOLUME::est_mince
virtual bool est_mince(void)
Definition: mg_volume.cpp:213
mg_gestionnaire.h
MG_SEGMENT::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_segment.cpp:113
mailleur2d.h
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
MAILLEUR3D_COUCHE::maille
virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur3d_couche.cpp:52
OT_VECTEUR_3D::get_longueur2
virtual double get_longueur2(void) const
Definition: ot_mathematique.cpp:488
MG_MAILLAGE::get_mg_segmentid
MG_SEGMENT * get_mg_segmentid(unsigned long num)
Definition: mg_maillage.cpp:595
MG_GEOMETRIE_OUTILS::projete
double projete(double *xyz, MG_FACE *face, double *uvproj, double *xyzproj, double precision=1e-6)
Definition: mg_geometrie_outils.cpp:329
M3D_TRIANGLE
Definition: m3d_triangle.h:31
m3d_triangle.h
TPL_MAP_ENTITE::premier_commun
virtual X premier_commun(TPL_MAP_ENTITE< X > &lst2, ITERATEUR &it1, ITERATEUR &it2)
Definition: tpl_map_entite.h:139
MAILLEUR3D_COUCHE::projete_noeud_sur_arete
MG_NOEUD * projete_noeud_sur_arete(MG_NOEUD *n1, MG_FACE *autreface, MG_ARETE **areop, TPL_MAP_ENTITE< MG_ARETE * > &lstaare)
Definition: mailleur3d_couche.cpp:325
MG_FACE::get_topologie_sousjacente
virtual void get_topologie_sousjacente(TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * > *lst)
Definition: mg_face.cpp:114
MG_ELEMENT_TOPOLOGIQUE::get_dimension
virtual int get_dimension(void)=0
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
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
MAILLEUR3D_COUCHE::insere_triangle_orientant
MG_TRIANGLE * insere_triangle_orientant(MG_FACE *face, MG_NOEUD *no1, MG_NOEUD *no2, MG_NOEUD *no3, int &sens)
Definition: mailleur3d_couche.cpp:382
mailleur3d_couche.h
MG_VOLUME::get_face_correspondante
virtual void get_face_correspondante(int num, MG_FACE **face1, MG_FACE **face2)
Definition: mg_volume.cpp:202
MAILLEUR2D
Definition: mailleur2d.h:49
MAILLEUR1D
Definition: mailleur1d.h:36
MAGIC_AFFICHE::affiche2
fonction_affiche * affiche2
Definition: magic_affiche.h:41
MAILLEUR0D
Definition: mailleur0d.h:34
MG_QUADRANGLE
Definition: mg_quadrangle.h:39
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
MG_FACE::inverser
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
Definition: mg_face.cpp:228
MG_ARETE::inverser
virtual void inverser(double &t, double *xyz, double precision=1e-6)
Definition: mg_arete.cpp:173
MAILLEUR3D_COUCHE::metrique
FCT_TAILLE * metrique
Definition: mailleur3d_couche.h:57
MG_ELEMENT_MAILLAGE::get_nouveau_numero
virtual int get_nouveau_numero(void)
Definition: mg_element_maillage.cpp:81
MG_MAILLAGE::ajouter_mg_triangle
MG_TRIANGLE * ajouter_mg_triangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:731
MG_SEGMENT::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_segment.cpp:108
MG_NOEUD
Definition: mg_noeud.h:41
TPL_SET::get_nb
int get_nb(void)
Definition: tpl_set.h:78
TPL_MAP_ENTITE::suivant_commun
virtual X suivant_commun(TPL_MAP_ENTITE< X > &lst2, ITERATEUR &it1, ITERATEUR &it2)
Definition: tpl_map_entite.h:165
mailleur1d.h
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
MG_NOEUD::get_coord
virtual double * get_coord(void)
Definition: mg_noeud.cpp:92
TPL_MAP_ENTITE::ITERATEUR
std::map< unsigned long, X, std::less< unsigned long > >::iterator ITERATEUR
Definition: tpl_map_entite.h:38
MG_ELEMENT_MAILLAGE::change_nouveau_numero
virtual void change_nouveau_numero(int num)
Definition: mg_element_maillage.cpp:76
TPL_LISTE_ENTITE::get_nb
virtual int get_nb(void)
Definition: tpl_liste_entite.h:67
MG_SOMMET::get_point
virtual MG_POINT * get_point(void)
Definition: mg_sommet.cpp:52
OT_VECTEUR_3D::norme
virtual void norme(void)
Definition: ot_mathematique.cpp:494
MAILLEUR3D_COUCHE::insere_quadrangle_orientant
MG_QUADRANGLE * insere_quadrangle_orientant(MG_FACE *face, MG_NOEUD *no1, MG_NOEUD *no2, MG_NOEUD *no3, MG_NOEUD *no4, int &sens)
Definition: mailleur3d_couche.cpp:424
MG_TRIANGLE::get_noeud2
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_triangle.cpp:131
TPL_LISTE_ENTITE::get
virtual X get(int num)
Definition: tpl_liste_entite.h:72
MAILLEUR3D_COUCHE::MAILLEUR3D_COUCHE
MAILLEUR3D_COUCHE(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, FCT_TAILLE *fct_taille)
Definition: mailleur3d_couche.cpp:38
MG_MAILLAGE::get_mg_noeudid
MG_NOEUD * get_mg_noeudid(unsigned long num)
Definition: mg_maillage.cpp:451
MG_MAILLAGE::get_mg_segment
MG_SEGMENT * get_mg_segment(unsigned int num)
Definition: mg_maillage.cpp:619
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
TPL_MAP_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_map_entite.h:55
TPL_SET::get
X get(int num)
Definition: tpl_set.h:84
MG_TRIANGLE::get_noeud1
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_triangle.cpp:126
MAILLEUR3D_COUCHE::insere_segment_orientant
MG_SEGMENT * insere_segment_orientant(MG_ARETE *are, MG_NOEUD *no1, MG_NOEUD *no2, int &sens)
Definition: mailleur3d_couche.cpp:359
MAILLEUR1D::maille
int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur1d.cpp:50
MG_FACE::calcul_normale_unitaire
virtual void calcul_normale_unitaire(double *uv, double *normale)
Definition: mg_face.cpp:248
MG_MAILLAGE::get_mg_geometrie
MG_GEOMETRIE * get_mg_geometrie(void)
Definition: mg_maillage.cpp:410
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
MAILLEUR2D::maille
int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur2d.cpp:49
mg_geometrie_outils.h
MG_TRIANGLE::get_noeud3
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_triangle.cpp:137
MAILLEUR
Definition: mailleur.h:33
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MG_SOMMET::get_dimension
virtual int get_dimension(void)
Definition: mg_sommet.cpp:93
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< MG_SEGMENT * >
MG_VOLUME::get_nb_face_correspondante
virtual int get_nb_face_correspondante(void)
Definition: mg_volume.cpp:208
MG_ARETE::deriver
virtual void deriver(double t, double *xyz)
Definition: mg_arete.cpp:149
MG_ARETE
Definition: mg_arete.h:36
MG_FACE
Definition: mg_face.h:34
MG_MAILLAGE::get_mg_triangleid
MG_TRIANGLE * get_mg_triangleid(unsigned long num)
Definition: mg_maillage.cpp:772
TPL_MAP_ENTITE::get_suivant
virtual X get_suivant(ITERATEUR &it)
Definition: tpl_map_entite.h:120
MG_SOMMET
Definition: mg_sommet.h:35
MG_GEOMETRIE_OUTILS
Definition: mg_geometrie_outils.h:37
MAGIC::ORIGINE::MAILLEUR_AUTO
@ MAILLEUR_AUTO
Definition: mg_definition.h:79
TPL_MAP_ENTITE::vide
virtual void vide(void)
Definition: tpl_map_entite.h:106
MG_MAILLAGE::ajouter_mg_quadrangle
MG_QUADRANGLE * ajouter_mg_quadrangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:930
MAILLEUR0D::maille
int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur0d.cpp:43
MG_POINT::evaluer
virtual void evaluer(double *xyz)=0
mailleur0d.h
MG_MAILLAGE::ajouter_mg_penta
MG_PENTA * ajouter_mg_penta(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_NOEUD *mgnoeud4, class MG_NOEUD *mgnoeud5, class MG_NOEUD *mgnoeud6, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:1669
MG_VOLUME::get_topologie_sousjacente
virtual void get_topologie_sousjacente(TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * > *lst)
Definition: mg_volume.cpp:90
MG_MAILLAGE::ajouter_mg_noeud
MG_NOEUD * ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE *topo, double xx, double yy, double zz, int origine, unsigned long num=0)
Definition: mg_maillage.cpp:421