MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
m3d_triangle.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 //####// m3d_triangle.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 
28 #include "m3d_triangle.h"
29 #include "mg_maillage.h"
30 
31 
32 
33 
34 
35 
36 
37 M3D_TRIANGLE::M3D_TRIANGLE(unsigned long num,MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_SEGMENT* mgsegment1,class MG_SEGMENT* mgsegment2,class MG_SEGMENT* mgsegment3,int origine):MG_TRIANGLE(num,topo,mgnoeud1,mgnoeud2,mgnoeud3,mgsegment1,mgsegment2,mgsegment3,origine),nb_voisin(0),etat_front(MAGIC::MAILLEURFRONTALETAT::FRONT_NONACTIF),frontiere(0)
38 {
39 }
40 
41 
42 M3D_TRIANGLE::M3D_TRIANGLE(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_SEGMENT* mgsegment1,class MG_SEGMENT* mgsegment2,class MG_SEGMENT* mgsegment3,int origine):MG_TRIANGLE(topo,mgnoeud1,mgnoeud2,mgnoeud3,mgsegment1,mgsegment2,mgsegment3,origine),nb_voisin(0),etat_front(MAGIC::MAILLEURFRONTALETAT::FRONT_NONACTIF),frontiere(0)
43 {
44 }
45 
46 M3D_TRIANGLE::M3D_TRIANGLE(M3D_TRIANGLE& mdd):MG_TRIANGLE(mdd),nb_voisin(mdd.nb_voisin),frontiere(mdd.frontiere)
47 {
48  voisin[0]=mdd.voisin[0];
49  voisin[1]=mdd.voisin[1];
50 }
51 
53 {
54 }
55 
56 
58 {
60 }
61 
62 
64 {
65  etat_front=num;
66 }
68 {
69  return etat_front;
70 }
71 
72 
74 {
75  mgfront=ft;
76 }
77 
79 {
80  return mgfront;
81 }
82 
83 
85 {
86  if (nb_voisin==0)
87  {
88  voisin[0]=tet;
89  voisin[1]=NULL;
90  nb_voisin=1;
91  return 1;
92  }
93  if (nb_voisin==1)
94  {
95  voisin[1]=tet;
96  nb_voisin=2;
97  return 1;
98  }
99  return 0;
100 }
101 
103 {
104  if (nb_voisin==1)
105  {
106  voisin[0]=NULL;
107  voisin[1]=NULL;
108  nb_voisin=0;
109  return 1;
110  }
111  if (nb_voisin==2)
112  {
113  if (voisin[0]==tet)
114  {
115  voisin[0]=voisin[1];
116  voisin[1]=NULL;
117  nb_voisin=1;
118  return 1;
119  }
120  else
121  {
122  voisin[1]=NULL;
123  nb_voisin=1;
124  return 1;
125  }
126  }
127  return 0;
128 }
129 
131 {
132  if ((num<0) && (num>1)) return NULL;
133  return voisin[num];
134 }
135 
136 
138 {
139  return nb_voisin;
140 }
141 
142 
143 
145 {
146  return qualite;
147 }
148 
150 {
151  qualite=val;
152 }
153 
155 {
156 if (frontiere==0)frontiere=1; else frontiere=0;
157 }
158 
159 
161 {
162 return frontiere;
163 }
164 
165 void M3D_TRIANGLE::enregistrer(std::ostream& o)
166 {
167  if ((liaison_topologique==NULL) && (MG_MAILLAGE::DIMENSIONMAILLAGESANSTOPO!=2) && (frontiere==0) ) return;
168  if (liaison_topologique==NULL) o << "%" << get_id() << "=TRIANGLE(NULL,$" << noeud1->get_id() << ",$" << noeud2->get_id() << ",$" << noeud3->get_id() << "," << origine_creation << ");" << std::endl;
169  else if (liaison_topologique->get_dimension()==2) o << "%" << get_id() << "=TRIANGLE($"<< get_lien_topologie()->get_id() << ",$" << noeud1->get_id() << ",$" << noeud2->get_id() << ",$" << noeud3->get_id() << "," << origine_creation << ");" << std::endl;
170 }
const unsigned int FRONT_NONACTIF
virtual int get_frontiere(void)
virtual void change_mgfront(class MG_FRONT_3D *ft)
virtual void enregistrer(std::ostream &o)
class MG_FRONT_3D * mgfront
Definition: m3d_triangle.h:62
virtual ~M3D_TRIANGLE()
virtual class MG_FRONT_3D * get_mgfront(void)
virtual int get_nb_voisin(void)
virtual void change_etat_front(int num)
virtual int get_type_entite(void)
virtual void change_qualite(double val)
virtual void change_frontiere(void)
virtual int get_etat_front(void)
virtual int supprimer_voisin(class MG_TETRA *tet)
M3D_TRIANGLE(unsigned long num, MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, class MG_SEGMENT *mgsegment1, class MG_SEGMENT *mgsegment2, class MG_SEGMENT *mgsegment3, int origine)
class MG_TETRA * voisin[2]
Definition: m3d_triangle.h:63
virtual double get_qualite(void)
virtual class MG_TETRA * get_voisin(int num)
double qualite
Definition: m3d_triangle.h:65
virtual int ajouter_voisin(class MG_TETRA *tet)
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
MG_ELEMENT_TOPOLOGIQUE * liaison_topologique
virtual int get_dimension(void)=0
unsigned long get_id()
static int DIMENSIONMAILLAGESANSTOPO
Definition: mg_maillage.h:177
class MG_NOEUD * noeud1
Definition: mg_triangle.h:74
class MG_NOEUD * noeud3
Definition: mg_triangle.h:76
class MG_NOEUD * noeud2
Definition: mg_triangle.h:75