MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur3d_recuperation.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_recuperation.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "gestionversion.h"
24 #include "fct_taille.h"
25 #include "mg_volume.h"
26 #include "m3d_triangle.h"
27 
28 
29 
30 
31 
32 MAILLEUR3D_RECUPERATION::MAILLEUR3D_RECUPERATION(MG_MAILLAGE* mgmai,MG_VOLUME* mgvol,FCT_TAILLE* fct_taille,bool save):MAILLEUR3D(mgmai,mgmai->get_mg_geometrie(),fct_taille,save,mgvol)
33 {
34 
35 }
36 
37 
39 {
40 }
41 
42 
43 
45 {
46 LISTE_MG_TRIANGLE::iterator it;
48  {
49  M3D_TRIANGLE* nvtri=(M3D_TRIANGLE*)tri;
50  nvtri->change_nouveau_numero(0);
52  if (nvtri->get_lien_topologie()!=NULL)
53  if (nvtri->get_lien_topologie()->get_dimension()==2)
54  if (((MG_FACE*)nvtri->get_lien_topologie())->get_mg_coface(0)->get_orientation()==-1)
56 
57 
58  }
59 
60 
61 LISTE_MG_TETRA::iterator ittet;
62 for (MG_TETRA* tet=mg_maillage->get_premier_tetra(ittet);tet!=NULL;tet=mg_maillage->get_suivant_tetra(ittet))
63  {
64  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle1(),0);
65  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle2(),1);
66  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle3(),2);
67  recherche_front_triangle(tet,(M3D_TRIANGLE*)tet->get_triangle4(),3);
68  }
69 
70 
72  {
73  M3D_TRIANGLE* mtri=(M3D_TRIANGLE*)tri;
74  //if ((mtri->get_nouveau_numero()==0) || ((mtri->get_nouveau_numero()==1) && (mtri->get_lien_topologie()->get_dimension()==3) ))
75  if ((mtri->get_nouveau_numero()==0) || ((mtri->get_nouveau_numero()==1) && (mtri->get_frontiere()!=1) ))
76  {
78  ajouter_front_courant(MAGIC::MAILLEURFRONTALETAT::NONFORCE,tri->get_noeud1(),tri->get_noeud2(),tri->get_noeud3(),mtri);
80  ajouter_front_courant(MAGIC::MAILLEURFRONTALETAT::NONFORCE,tri->get_noeud2(),tri->get_noeud1(),tri->get_noeud3(),mtri);
81  }
83 
84  }
85 
86 }
87 
88 
90 {
92 MG_NOEUD* no1;
93 MG_NOEUD* no2;
94 MG_NOEUD* no3;
95 if (num==0)
96  {
97  no1=tet->get_noeud1();
98  no2=tet->get_noeud3();
99  no3=tet->get_noeud2();
100  }
101 if (num==1)
102  {
103  no1=tet->get_noeud1();
104  no2=tet->get_noeud2();
105  no3=tet->get_noeud4();
106  }
107 if (num==2)
108  {
109  no1=tet->get_noeud2();
110  no2=tet->get_noeud3();
111  no3=tet->get_noeud4();
112  }
113 if (num==3)
114  {
115  no1=tet->get_noeud1();
116  no2=tet->get_noeud4();
117  no3=tet->get_noeud3();
118  }
119 OT_VECTEUR_3D vec1(no1->get_coord(),no2->get_coord());
120 OT_VECTEUR_3D vec2(no1->get_coord(),no3->get_coord());
121 OT_VECTEUR_3D normext=vec1&vec2;
122 OT_VECTEUR_3D vec3(tri->get_noeud1()->get_coord(),tri->get_noeud2()->get_coord());
123 OT_VECTEUR_3D vec4(tri->get_noeud1()->get_coord(),tri->get_noeud3()->get_coord());
124 OT_VECTEUR_3D normtri=vec3&vec4;
127 }
virtual int get_frontiere(void)
virtual void change_etat_front(int num)
virtual int get_etat_front(void)
void recherche_front_triangle(MG_TETRA *tet, class M3D_TRIANGLE *tri, int num)
void cree_front(MG_VOLUME *mgvol)
MAILLEUR3D_RECUPERATION(MG_MAILLAGE *mgmai, MG_VOLUME *mgvol, FCT_TAILLE *fct_taille, bool save)
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_MAILLAGE * mg_maillage
Definition: mailleur3d.h:167
virtual int get_nouveau_numero(void)
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
virtual void change_nouveau_numero(int num)
virtual int get_dimension(void)=0
MG_TETRA * get_premier_tetra(LISTE_MG_TETRA::iterator &it)
MG_TETRA * get_suivant_tetra(LISTE_MG_TETRA::iterator &it)
MG_TRIANGLE * get_premier_triangle(LISTE_MG_TRIANGLE::iterator &it)
MG_TRIANGLE * get_suivant_triangle(LISTE_MG_TRIANGLE::iterator &it)
virtual double * get_coord(void)
Definition: mg_noeud.cpp:92
virtual MG_NOEUD * get_noeud1(void)
Definition: mg_tetra.cpp:143
virtual MG_NOEUD * get_noeud2(void)
Definition: mg_tetra.cpp:148
virtual MG_NOEUD * get_noeud4(void)
Definition: mg_tetra.cpp:158
virtual MG_NOEUD * get_noeud3(void)
Definition: mg_tetra.cpp:153
virtual MG_NOEUD * get_noeud3(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)