MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
CAD4FE_MCNode.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 //####// CAD4FE_MCNode.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #pragma hdrstop
25 
26 
27 #include "gestionversion.h"
28 #include "CAD4FE_MCNode.h"
29 #include "mg_maillage.h"
30 #include "mg_geometrie.h"
32 #include "CAD4FE_MCVertex.h"
33 #include "CAD4FE_MCEdge.h"
34 #include "CAD4FE_MCFace.h"
35 #include "CAD4FE_Geometric_Tools.h"
36 #include <math.h>
37 
38 
39 #pragma package(smart_init)
40 
41 using namespace CAD4FE;
42 
44 : MG_NOEUD (0, 0, 0, 0, 0), _saveFormat(0)
45 {
46  Creator = unknown;
47 }
48 MCNode::MCNode(unsigned long num,MG_ELEMENT_TOPOLOGIQUE* mcTopo,MG_ELEMENT_TOPOLOGIQUE* __refTopo,double xx,double yy,double zz)
49 : MG_NOEUD (num, mcTopo, xx,yy,zz,MAGIC::ORIGINE::MAILLEUR_AUTO),_refTopo(__refTopo), _saveFormat(0)
50 {
51  Creator = unknown;
53 }
54 MCNode::MCNode(MG_ELEMENT_TOPOLOGIQUE* mcTopo,MG_ELEMENT_TOPOLOGIQUE* __refTopo,double xx,double yy,double zz)
55 : MG_NOEUD(mcTopo,xx,yy,zz,MAGIC::ORIGINE::MAILLEUR_AUTO),_refTopo(__refTopo), _saveFormat(0)
56 {
57  Creator = unknown;
59 }
60 MCNode::MCNode(MG_ELEMENT_TOPOLOGIQUE* mcTopo,MG_FACE* __refFace, double __uv[2], double __xyz[3])
61 : MG_NOEUD(mcTopo,__xyz[0],__xyz[1],__xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO),_refTopo(__refFace), _saveFormat(0)
62 {
63  Creator = unknown;
64  OT_VECTEUR_3D uv(__uv[0], __uv[1], 0);
65  _F.insert(std::make_pair(__refFace, uv));
66 }
67 MCNode::MCNode(MG_ELEMENT_TOPOLOGIQUE* mcTopo,MG_ARETE* __refEdge, double __t, double __xyz[3])
68 : MG_NOEUD(mcTopo,__xyz[0],__xyz[1],__xyz[2],MAGIC::ORIGINE::MAILLEUR_AUTO),_refTopo(__refEdge), _saveFormat(0)
69 {
70  Creator = unknown;
71  _E.insert(std::make_pair(__refEdge, __t));
73 }
75 {
76 }
77 MCNode::MCNode(const MCNode& __src)
78 : MG_NOEUD ((MG_NOEUD & )__src)
79 {
80 /* for (FMapCIterator itF = __src._F.begin();
81  itF != __src._F.end();
82  itF++)
83  _F.insert(std::make_pair(itF->first,itF->second));
84  for (EMapCIterator itE = __src._E.begin();
85  itE != __src._E.end();
86  itE++)
87  _E.insert(std::make_pair(itE->first,itE->second));
88  for (VMapCIterator itV = __src._V.begin();
89  itV != __src._V.end();
90  itV++)
91  _V.insert(*itV); */
92  Creator = __src.Creator;
93  _F=__src._F;
94  _E=__src._E;
95  _V=__src._V;
96  _refTopo = __src._refTopo;
97 }
98 void MCNode::CopyGeometry(const MCNode& __src)
99 {
100  /*_F.clear();
101  for (FMapCIterator itF = __src._F.begin();
102  itF != __src._F.end();
103  itF++)
104  _F.insert(std::make_pair(itF->first,itF->second));
105  _E.clear();
106  for (EMapCIterator itE = __src._E.begin();
107  itE != __src._E.end();
108  itE++)
109  _E.insert(std::make_pair(itE->first,itE->second));
110  _V.clear();
111  for (VMapCIterator itV = __src._V.begin();
112  itV != __src._V.end();
113  itV++)
114  _V.insert(*itV); */
115  _F.clear();_E.clear();_V.clear();
116  _F=__src._F;
117  _E=__src._E;
118  _V=__src._V;
119  _refTopo = __src._refTopo;
120  for (int i=0;i<3;i++)xyz[i]=__src.xyz[i];
121 }
123 {
124  return IDMCNODE;
125 }
127 {
128  return _refTopo;
129 }
131 {
132  _refTopo = __refTopo;
133 }
137 void MCNode::SetRefFaceMapping(MG_FACE * __face, double * __uv) {OT_VECTEUR_3D vec(__uv[0],__uv[1],0);_F[__face] = vec;}
138 void MCNode::SetRefEdgeMapping(MG_ARETE * __edge, double __t) {_E[__edge] = __t;}
139 void MCNode::SetRefVertexMapping(MG_SOMMET * __vertex) { _V.insert(__vertex); }
141 {
143  _F.clear(); _E.clear(); _V.clear();
144 
145  if (topo == NULL) // should happen rarely
146  return;
147 
148  switch (topo->get_dimension())
149  {
150  case 0:
151  {
152  // Look for an existing MC Node on this vertex
153  MG_SOMMET* vertex=(MG_SOMMET*)topo;
154  MCNode * mcNode = 0;
155 
156  TPL_SET<MG_ELEMENT_MAILLAGE*> * lien_maillage = vertex->get_lien_maillage();
158  MG_ELEMENT_MAILLAGE* element;
159  int nb = lien_maillage->get_nb();
160  int i=0;
161  for (element = lien_maillage->get_premier(it); i++ < nb && element ; element = lien_maillage->get_suivant(it) )
162  {
163  int elementType = element->get_type_entite();
164  if ( elementType == IDMCNODE && element != this )
165  {
166  MCNode * tmpmcNode = (MCNode*) element;
167  if (tmpmcNode->_V.size() && tmpmcNode->_E.size() && tmpmcNode->_F.size())
168  {
169  mcNode = tmpmcNode;
170  break;
171  }
172  }
173  }
174  // Make a copy of the mapping to the existing MC node
175  if (mcNode)
176  {
177  _V = mcNode->_V;
178  _E = mcNode->_E;
179  _F = mcNode->_F;
180  }
181  // Compute the topology mapping
182  else
183  {
184  _V.insert((MG_SOMMET*)topo);
185  if (get_lien_topologie())
186  {
187  if (get_lien_topologie()->get_dimension() == 0)
188  {
189  MCVertex * mcVertex = (MCVertex*)get_lien_topologie();
190  for (std::map<unsigned long, MG_SOMMET*>::iterator itMergedVertex = mcVertex->GetMergedRefVertices().begin();
191  itMergedVertex != mcVertex->GetMergedRefVertices().end();
192  itMergedVertex++)
193  _V.insert(itMergedVertex->second);
194  }
195  if (get_lien_topologie()->get_dimension() == 1)
196  {
197  MCEdge * mcEdge = (MCEdge*)get_lien_topologie();
198  MCVertex * mcVertex[2];
199  mcVertex[0] = (MCVertex*)mcEdge->get_cosommet1()->get_sommet();
200  mcVertex[1] = (MCVertex*)mcEdge->get_cosommet2()->get_sommet();
201  for (int j = 0; j<2; j++)
202  {
203  std::map<unsigned long, MG_SOMMET*>::iterator itMergedVertex = mcVertex[j]->GetMergedRefVertices().find(_refTopo->get_id());
204  if (itMergedVertex != mcVertex[j]->GetMergedRefVertices().end())
205  {
206  for (itMergedVertex = mcVertex[j]->GetMergedRefVertices().begin();
207  itMergedVertex != mcVertex[j]->GetMergedRefVertices().end();
208  itMergedVertex++)
209  _V.insert(itMergedVertex->second);
210  }
211  }
212  }
213  }
214  else
215  {
216  printf("Warning: MC topology of MC Node = NULL!\n");
217  }
218  for (std::set<MG_SOMMET*>::iterator itV = _V.begin();
219  itV != _V.end();
220  itV++)
221  {
222  MG_SOMMET * v = *itV;
223  // Init Edge Mapping
224  for (int itE = 0; itE < v->get_nb_mg_cosommet(); itE++)
225  {
226  MG_ARETE * edge = v->get_mg_cosommet(itE)->get_arete();
227 
228  // edge parameter is the reference vertex parameter
229  MG_SOMMET * refVertex = (MG_SOMMET *) _refTopo;
230  if ( v == refVertex || (edge->get_cosommet1()->get_sommet() != refVertex) && (edge->get_cosommet1()->get_sommet() != refVertex) )
231  {
232  double tEdge = v->get_mg_cosommet(itE)->get_t();
233  double edgePeriod = edge->get_courbe()->get_periode();
234  if ( tEdge < edge->get_tmin() && edgePeriod != 0.0 )
235  {
236  tEdge += edgePeriod;
237  }
238  _E.insert(std::make_pair(edge, tEdge));
239  }
240 
241  // Init Face mapping
242  for (int itF = 0; itF < edge->get_nb_mg_coarete(); itF++)
243  {
244  MG_FACE * face = edge->get_mg_coarete(itF)->get_boucle()->get_mg_face();
245 
246  if (v != refVertex && GeometricTools::MG_FACE_Contains_MG_SOMMET(face,refVertex) )
247  continue;
248 
249  if ( _F.find(face) == _F.end() )
250  {
251  // project vertex in face parametrization
252  OT_VECTEUR_3D uv(0,0,0);
253  face->inverser(uv,xyz,1E-6);
254  // correct uv coordinates of 3D points which are not
255  // exactly on "exact surfaces" (torus, sphere, cylinder, cone, etc)
257  _F.insert(std::make_pair(face, uv));
258  }
259  }
260  }
261  }
262  }
263  break;
264  }
265  case 1:
266  {
267  MG_ARETE * edge = (MG_ARETE*) topo;
268 
269  // Init Edge Mapping
270  // Not implemented : parameter of edge mapping
271  if (_E.find(edge) == _E.end())
272  {
273  double tEdge;
274  double edgePeriod = edge->get_courbe()->get_periode();
275  edge->inverser(tEdge,xyz);
276  if ( tEdge < edge->get_tmin() && edgePeriod != 0.0 )
277  {
278  tEdge += edgePeriod;
279  }
280  _E.insert(std::make_pair(edge, tEdge));
281  }
282 
283  // Init Face mapping
284  for (int itF = 0; itF < edge->get_nb_mg_coarete(); itF++)
285  {
286  MG_FACE * face = edge->get_mg_coarete(itF)->get_boucle()->get_mg_face();
287  OT_VECTEUR_3D uv(0,0,0);
288  face->inverser(uv,xyz,1E-6);
289  // correct uv coordinates of 3D points which are not
290  // exactly on "exact surfaces" (torus, sphere, cylinder, cone, etc)
292  _F.insert(std::make_pair(face, uv));
293  }
294  break;
295  }
296  case 2:
297  {
298  // Init Face Mapping
299  MG_FACE * face = (MG_FACE*) topo;
300  OT_VECTEUR_3D uv(0,0,0);
301  face->inverser(uv,xyz,1E-6);
302  // correct uv coordinates of 3D points which are not
303  // exactly on "exact surfaces" (torus, sphere, cylinder, cone, etc)
305  _F.insert(std::make_pair(face, uv));
306  break;
307  }
308 
309  }
310 }
311 void MCNode::SharedFaces(MCNode * __other, std::set <MG_FACE*> & __setF)
312 {
313  for (MCNode::FMapIterator itF1 = _F.begin();
314  itF1 != _F.end();
315  itF1 ++ )
316  if (__other->_F.find(itF1->first) != __other->_F.end())
317  __setF.insert (itF1->first);
318 }
319 void MCNode::SharedEdges(MCNode * __other, std::set <MG_ARETE*> & __setE)
320 {
321  for (MCNode::EMapIterator itE1 = _E.begin();
322  itE1 != _E.end();
323  itE1 ++ )
324  if (__other->_E.find(itE1->first) != __other->_E.end())
325  __setE.insert (itE1->first);
326 }
327 void MCNode::SharedVertices(MCNode * __other, std::set <MG_SOMMET*> & __setV)
328 {
329  for (MCNode::VMapIterator itV1 = _V.begin();
330  itV1 != _V.end();
331  itV1 ++ )
332  if (__other->_V.find(*itV1) != __other->_V.end())
333  __setV.insert (*itV1);
334 }
336 {
337  FMapIterator itF = _F.find(__e);
338  return (itF != _F.end());
339 }
340 void MCNode::NormalMCFace(MCFace* __mcFace, double * __normal)
341 {
342  int nbRefFaces=0;
343  int dimension=_refTopo->get_dimension();
344  switch (dimension)
345  {
346  case 1:
347  {
348  __mcFace->calcul_normale_unitaire(GetRefFaceMapping(), __normal, &nbRefFaces);
349  return;
350  }
351  case 2:
352  {
353  __mcFace->calcul_normale_unitaire(GetRefFaceMapping(), __normal, &nbRefFaces);
354  return;
355  }
356  case 0:
357  {
358  __mcFace->calcul_normale_unitaire((MG_SOMMET*) _refTopo, __normal, &nbRefFaces);
359  }
360  }
361 }
362 
364 {
365  FMapIterator itF = _F.find(__e);
366  if (itF == _F.end()) return false;
367  switch (_refTopo->get_dimension())
368  {
369  case 0:
370  if (_V.size() <= 1) // if it's not in a merged vertex, then no further test is required
371  return true;
372  else
374  default:
375  return true;
376  }
377 }
379 {
380  EMapIterator itE = _E.find(__e);
381  if (itE == _E.end()) return false;
382  switch (_refTopo->get_dimension())
383  {
384  case 0:
385  if (_V.size() <= 1) // if it's not in a merged vertex, then no further test is required
386  return true;
387  else
389  default:
390  return true;
391  }
392 }
394 {
395  return (_E.find(__e) != _E.end());
396 }
398 {
399  return (_V.find(__e) != _V.end());
400 }
402 {
403  return (_refTopo != __e);
404 }
406 {
407  if (_V.size() > 1)
408  {
409  MG_SOMMET * refVertex = (MG_SOMMET*) _refTopo;
410  for (VMapIterator itV = _V.begin();
411  itV != _V.end();
412  itV++)
413  {
414  MG_SOMMET * mergedVertex = *itV;
415  if (mergedVertex == refVertex)
416  continue;
417  if (GeometricTools::MG_FACE_Contains_MG_SOMMET(__face, mergedVertex))
418  return mergedVertex;
419  }
420  }
421  return NULL;
422 }
424 {
425  static OT_VECTEUR_3D badParam (-1E308,-1E308,-1E308);
426  FMapIterator itF = _F.find(__e);
427  if (itF != _F.end())
428  return itF->second;
429  else
430  return badParam;
431 }
433 {
434  return GetFaceParams (__e);
435 }
437 {
438  static double badParam = -1E308;
439  EMapCIterator itE = _E.find(__e);
440  if (itE != _E.end())
441  return itE->second;
442  else
443  return badParam;
444 }
445 double MCNode::T (MG_ARETE * __e)
446 {
447  return GetEdgeParams(__e);
448 }
449 
450 void MCNode::SetSaveFormat(char __format)
451 {
452  _saveFormat=__format;
453  if (__format == 2)
454  {
456  }
457 }
458 
459 void MCNode::enregistrer(std::ostream& o,double version)
460 {
461  if (_saveFormat==0)
462  {
463  o << "%" << get_id() << "=CAD4FE_MCNODE($"<< _refTopo->get_id() <<",$" << get_lien_topologie()->get_id() << "," << xyz[0] << "," << xyz[1] << "," << xyz[2] << ");" << std::endl;
464  }
465  else if (_saveFormat==1)
466  {
467  MG_NOEUD::enregistrer (o,version);
468  }
469  else if (_saveFormat==2)
470  {
471  MG_NOEUD::enregistrer (o,version);
472  }
473 }
474 
476 {
477  printf("%f %f %f ", get_x(), get_y(), get_z());
478 }
479 
CAD4FE::MCNode::get_type_entite
virtual int get_type_entite()
Definition: CAD4FE_MCNode.cpp:122
MG_ARETE::get_cosommet2
virtual class MG_COSOMMET * get_cosommet2(void)
Definition: mg_arete.cpp:85
CAD4FE::MCNode::ConstructMapping
void ConstructMapping()
Definition: CAD4FE_MCNode.cpp:140
mg_geometrie.h
gestionversion.h
CAD4FE::MCNode::~MCNode
virtual ~MCNode()
Definition: CAD4FE_MCNode.cpp:74
CAD4FE::MCNode::EMap
std::map< MG_ARETE *, double > EMap
Definition: CAD4FE_MCNode.h:52
CAD4FE::MCNode::SetRefEdgeMapping
void SetRefEdgeMapping(MG_ARETE *__edge, double __t)
Definition: CAD4FE_MCNode.cpp:138
MG_NOEUD::v
double v
Definition: mg_noeud.h:107
CAD4FE::MCNode::_refTopo
MG_ELEMENT_TOPOLOGIQUE * _refTopo
Definition: CAD4FE_MCNode.h:122
CAD4FE::MCNode::RefTopoIsInVertex
bool RefTopoIsInVertex(MG_SOMMET *)
Definition: CAD4FE_MCNode.cpp:401
MG_NOEUD::get_z
virtual double get_z(void)
Definition: mg_noeud.cpp:87
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
TPL_SET< MG_ELEMENT_MAILLAGE * >
CAD4FE::MCNode::_saveFormat
char _saveFormat
Definition: CAD4FE_MCNode.h:123
MG_ELEMENT_MAILLAGE
Definition: mg_element_maillage.h:38
CAD4FE::MCNode::_F
FMap _F
Definition: CAD4FE_MCNode.h:119
TPL_SET::get_premier
X get_premier(ITERATEUR &it)
Definition: tpl_set.h:99
CAD4FE::MCNode::IsInVertex
bool IsInVertex(MG_SOMMET *)
Definition: CAD4FE_MCNode.cpp:397
MG_COARETE::get_boucle
virtual MG_BOUCLE * get_boucle(void)
Definition: mg_coarete.cpp:53
MG_ELEMENT_TOPOLOGIQUE::get_dimension
virtual int get_dimension(void)=0
CAD4FE::MCNode::enregistrer
virtual void enregistrer(std::ostream &o, double version)
Definition: CAD4FE_MCNode.cpp:459
IDMCNODE
const unsigned int IDMCNODE
Definition: CAD4FE_MCNode.h:34
MG_ELEMENT_MAILLAGE::change_lien_topologie
void change_lien_topologie(MG_ELEMENT_TOPOLOGIQUE *topo)
Definition: mg_element_maillage.cpp:56
MG_NOEUD::enregistrer
virtual void enregistrer(std::ostream &o, double version)
Definition: mg_noeud.cpp:241
CAD4FE::MCNode::unknown
@ unknown
Definition: CAD4FE_MCNode.h: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
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
CAD4FE::MCNode::SetRefFaceMapping
void SetRefFaceMapping(MG_FACE *__face, double *__uv)
Definition: CAD4FE_MCNode.cpp:137
MAGIC
Definition: mg_fast_marching.cpp:40
CAD4FE::MCNode::GetRefVertexMapping
VMap & GetRefVertexMapping()
Definition: CAD4FE_MCNode.cpp:136
MG_ARETE::get_nb_mg_coarete
virtual int get_nb_mg_coarete(void)
Definition: mg_arete.cpp:106
CAD4FE::MCNode::IsInFace
bool IsInFace(MG_FACE *)
Definition: CAD4FE_MCNode.cpp:335
CAD4FE::MCNode::SetSaveFormat
void SetSaveFormat(char __format)
Definition: CAD4FE_MCNode.cpp:450
CAD4FE::MCNode::_V
VMap _V
Definition: CAD4FE_MCNode.h:121
CAD4FE::MCNode::MCNode
MCNode()
Definition: CAD4FE_MCNode.cpp:43
CAD4FE::MCNode::EMapCIterator
EMap::const_iterator EMapCIterator
Definition: CAD4FE_MCNode.h:54
CAD4FE::MCNode::T
double T(MG_ARETE *)
Definition: CAD4FE_MCNode.cpp:445
CAD4FE::MCNode::RefTopoIsInFace
bool RefTopoIsInFace(MG_FACE *)
Definition: CAD4FE_MCNode.cpp:363
MG_NOEUD
Definition: mg_noeud.h:41
CAD4FE::MCNode::VMapIterator
VMap::iterator VMapIterator
Definition: CAD4FE_MCNode.h:56
TPL_SET::get_nb
int get_nb(void)
Definition: tpl_set.h:78
CAD4FE::MCVertex
Definition: CAD4FE_MCVertex.h:35
CAD4FE::MCNode::IsInEdge
bool IsInEdge(MG_ARETE *)
Definition: CAD4FE_MCNode.cpp:393
CAD4FE_MCVertex.h
CAD4FE::MCNode::UV
OT_VECTEUR_3D & UV(MG_FACE *)
Definition: CAD4FE_MCNode.cpp:432
MG_BOUCLE::get_mg_face
virtual MG_FACE * get_mg_face(void)
Definition: mg_boucle.cpp:102
CAD4FE::MCNode::_E
EMap _E
Definition: CAD4FE_MCNode.h:120
CAD4FE::MCNode::FMapIterator
FMap::iterator FMapIterator
Definition: CAD4FE_MCNode.h:51
CAD4FE::GeometricTools::MG_FACE_Contains_MG_SOMMET
static bool MG_FACE_Contains_MG_SOMMET(MG_FACE *__face, MG_SOMMET *v)
Definition: CAD4FE_Geometric_Tools.cpp:455
CAD4FE_FaceBoundaryPoint.h
MG_COSOMMET::get_sommet
virtual MG_SOMMET * get_sommet(void)
Definition: mg_cosommet.cpp:83
CAD4FE_MCEdge.h
CAD4FE::MCNode::GetFaceParams
OT_VECTEUR_3D & GetFaceParams(MG_FACE *)
Definition: CAD4FE_MCNode.cpp:423
MG_NOEUD::get_x
virtual double get_x(void)
Definition: mg_noeud.cpp:77
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
CAD4FE_MCNode.h
CAD4FE::MCNode::RefTopoIsInEdge
bool RefTopoIsInEdge(MG_ARETE *)
Definition: CAD4FE_MCNode.cpp:378
CAD4FE::MCEdge
Definition: CAD4FE_MCEdge.h:48
mg_maillage.h
CAD4FE_Geometric_Tools.h
CAD4FE::MCNode::FMap
std::map< MG_FACE *, OT_VECTEUR_3D > FMap
Definition: CAD4FE_MCNode.h:50
MG_NOEUD::xyz
double xyz[3]
Definition: mg_noeud.h:104
CAD4FE::MCVertex::GetMergedRefVertices
std::map< unsigned long, MG_SOMMET * > & GetMergedRefVertices()
Definition: CAD4FE_MCVertex.cpp:94
CAD4FE::MCNode::GetEdgeParams
double GetEdgeParams(MG_ARETE *)
Definition: CAD4FE_MCNode.cpp:436
MG_ARETE::get_courbe
virtual class MG_COURBE * get_courbe(void)
Definition: mg_arete.cpp:89
CAD4FE::MCNode::GetMergedVertex
MG_SOMMET * GetMergedVertex(MG_FACE *__face)
Definition: CAD4FE_MCNode.cpp:405
MG_ELEMENT_MAILLAGE::get_lien_topologie
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
Definition: mg_element_maillage.cpp:51
CAD4FE::MCNode::VMap
std::set< MG_SOMMET * > VMap
Definition: CAD4FE_MCNode.h:55
CAD4FE::GeometricTools::MG_ARETE_Contains_MG_SOMMET
static bool MG_ARETE_Contains_MG_SOMMET(MG_ARETE *__edge, MG_SOMMET *__vertex)
Definition: CAD4FE_Geometric_Tools.cpp:480
CAD4FE
Definition: CAD4FE_ClosestPoint_Segment_MG_ARETE.h:34
CAD4FE::MCNode::GetRefEdgeMapping
EMap & GetRefEdgeMapping()
Definition: CAD4FE_MCNode.cpp:135
MG_COURBE::get_periode
virtual double get_periode(void)=0
CAD4FE::MCNode
Definition: CAD4FE_MCNode.h:47
CAD4FE::MCNode::GetRefFaceMapping
FMap & GetRefFaceMapping()
Definition: CAD4FE_MCNode.cpp:134
CAD4FE::MCNode::NormalMCFace
void NormalMCFace(MCFace *__mcFace, double *__normal)
Definition: CAD4FE_MCNode.cpp:340
CAD4FE::MCNode::change_lien_topologie_reference
void change_lien_topologie_reference(MG_ELEMENT_TOPOLOGIQUE *__refTopo)
Definition: CAD4FE_MCNode.cpp:130
CAD4FE::MCNode::get_lien_topologie_reference
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie_reference()
Definition: CAD4FE_MCNode.cpp:126
CAD4FE::MCNode::Creator
enum CAD4FE::MCNode::CreatorType Creator
CAD4FE::MCNode::CopyGeometry
void CopyGeometry(const MCNode &)
Definition: CAD4FE_MCNode.cpp:98
MG_ARETE
Definition: mg_arete.h:36
MG_FACE
Definition: mg_face.h:34
CAD4FE::MCFace
Definition: CAD4FE_MCFace.h:50
CAD4FE_MCFace.h
MG_ARETE::get_cosommet1
virtual class MG_COSOMMET * get_cosommet1(void)
Definition: mg_arete.cpp:81
MG_SOMMET
Definition: mg_sommet.h:35
CAD4FE::GeometricTools::FacePointCorrection
static double FacePointCorrection(MG_FACE *__face, double __xyz[3], double __uv1[2])
Definition: CAD4FE_Geometric_Tools.cpp:523
CAD4FE::MCFace::calcul_normale_unitaire
void calcul_normale_unitaire(double *uv, double *xyz)
Definition: CAD4FE_MCFace.h:67
CAD4FE::MCNode::SharedVertices
void SharedVertices(MCNode *__other, std::set< MG_SOMMET * > &__setV)
Definition: CAD4FE_MCNode.cpp:327
CAD4FE::MCNode::EMapIterator
EMap::iterator EMapIterator
Definition: CAD4FE_MCNode.h:53
CAD4FE::MCNode::SharedFaces
void SharedFaces(MCNode *, std::set< MG_FACE * > &__setF)
Definition: CAD4FE_MCNode.cpp:311
CAD4FE::MCNode::Print
void Print()
Definition: CAD4FE_MCNode.cpp:475
TPL_SET::get_suivant
X get_suivant(ITERATEUR &it)
Definition: tpl_set.h:107
MG_ARETE::get_mg_coarete
virtual MG_COARETE * get_mg_coarete(int num)
Definition: mg_arete.cpp:228
MG_NOEUD::get_y
virtual double get_y(void)
Definition: mg_noeud.cpp:82
CAD4FE::MCNode::SharedEdges
void SharedEdges(MCNode *__other, std::set< MG_ARETE * > &__setE)
Definition: CAD4FE_MCNode.cpp:319
CAD4FE::MCNode::SetRefVertexMapping
void SetRefVertexMapping(MG_SOMMET *__vertex)
Definition: CAD4FE_MCNode.cpp:139