MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
fct_generateur_frontiere.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 //####// fct_generateur_frontiere.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:52 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 
26 #pragma hdrstop
27 
28 
29 #include <math.h>
31 #include "mg_gestionnaire.h"
32 #include "ct_face.h"
33 #include "ct_point.h"
34 
35 
36 
37 
38 FCT_GENERATEUR_FRONTIERE::FCT_GENERATEUR_FRONTIERE(MG_GESTIONNAIRE& mggest,double dn,double eps,int ind1,double ind2,double *lst_pt_ctrl,int nbpt):FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION(dn,ind1,ind2),gest(mggest),epsilon(eps),point_controle(lst_pt_ctrl),nb_pt_ctrl(nbpt)
39 {
40 }
41 
43 {
44 }
45 
46 
48 {
50  if (mggt!=NULL)
51  {
52  std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
53  for(MG_ELEMENT_TOPOLOGIQUE* ele=mggt->get_premier(it);ele!=NULL;ele=mggt->get_suivant(it))
54  {
55  lst.ajouter(ele);
56  ele->get_topologie_sousjacente(&lst);
57  }
58  }
59  xmin=1e308,ymin=1e308,zmin=1e308;
60  xmax=-1e308,ymax=-1e308,zmax=-1e308;
61  int nb_geo=gest.get_nb_mg_geometrie();
62  for (int i=0;i<nb_geo;i++)
63  {
65  int nb_face=mggeo->get_nb_mg_face();
67  for (int j=0;j<nb_face;j++)
68  {
69  MG_FACE* face=mggeo->get_mg_face(j);
70  CT_FACE* cface=new CT_FACE(face);
71  cface->change_umax(-1e308);
72  cface->change_umin(1e308);
73  cface->change_vmax(-1e308);
74  cface->change_vmin(1e308);
75  lstface.ajouter(cface);
76  }
77  int nb_arete=mggeo->get_nb_mg_arete();
78  for (int j=0;j<nb_arete;j++)
79  {
80  MG_ARETE* arete=mggeo->get_mg_arete(j);
81  if (mggt!=NULL)
82  if (lst.existe(arete)==0) continue;
83  int nbfac=arete->get_nb_mg_coarete();
84  double tmin=arete->get_tmin();
85  double tmax=arete->get_tmax();
86  double tdemi=0.5*(tmax+tmin);
87  double xyz1[3],xyz2[3];
88  arete->evaluer(tmin,xyz1);
89  arete->evaluer(tdemi,xyz2);
90  OT_VECTEUR_3D vec(xyz1,xyz2);
91  double densdep=vec.get_longueur()*2.;
92  MG_FACE** lstfac=new MG_FACE*[nbfac];
93  for (int k=0;k<nbfac;k++)
94  lstfac[k]=arete->get_mg_coarete(k)->get_boucle()->get_mg_face();
95  if (pas_echantillon!=-1)
96  for (int k=0;k<pas_echantillon+1;k++)
97  {
98  double t=tmin+1.0*k/pas_echantillon*(tmax-tmin);
99  double xyz[3];
100  arete->evaluer(t,xyz);
101  if (xyz[0]<xmin) xmin=xyz[0];
102  if (xyz[0]>xmax) xmax=xyz[0];
103  if (xyz[1]<ymin) ymin=xyz[1];
104  if (xyz[1]>ymax) ymax=xyz[1];
105  if (xyz[2]<zmin) zmin=xyz[2];
106  if (xyz[2]>zmax) zmax=xyz[2];
107  double courbure=arete->get_M(t);
108  for (int l=0;l<nbfac;l++)
109  {
110  double uv[2];
111  lstfac[l]->inverser(uv,xyz);
112  CT_FACE* fac=lstface.getid(lstfac[l]->get_id());
113  if (uv[0]>fac->get_umax()) fac->change_umax(uv[0]);
114  if (uv[0]<fac->get_umin()) fac->change_umin(uv[0]);
115  if (uv[1]>fac->get_vmax()) fac->change_vmax(uv[1]);
116  if (uv[1]<fac->get_vmin()) fac->change_vmin(uv[1]);
117  double cmin,cmax;
118  lstfac[l]->get_courbure(uv,cmax,cmin);
119  cmax=fabs(cmax);
120  if (cmax>courbure) courbure=cmax;
121  }
122  double dn=densdep;
123  if (!(OPERATEUR::egal(courbure,0.0,1e-8))) dn=sqrt(8*epsilon/courbure);
124  else dn=dng;
125  if (dn>dng) dn=dng;
126  if (densdep<dn) dn=densdep;
127  double dist=zonezoom*(dng-dn);
128  if (!(OPERATEUR::egal(dist,0.0,1e-8)))
129  {
130  BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
131  DOUBLEN<1> ecart(&dn);
132  CT_POINT<1>* pt=new CT_POINT<1>(xyz[0],xyz[1],xyz[2],ecart,boite);
133  lstpoint.ajouter(pt);
134  }
135  }
136  else
137  {
138  double t=tmin;
139  int ok=0;
140  do
141  {
142  double xyz[3];
143  arete->evaluer(t,xyz);
144  if (xyz[0]<xmin) xmin=xyz[0];
145  if (xyz[0]>xmax) xmax=xyz[0];
146  if (xyz[1]<ymin) ymin=xyz[1];
147  if (xyz[1]>ymax) ymax=xyz[1];
148  if (xyz[2]<zmin) zmin=xyz[2];
149  if (xyz[2]>zmax) zmax=xyz[2];
150  double courbure=arete->get_M(t);
151  for (int l=0;l<nbfac;l++)
152  {
153  double uv[2];
154  lstfac[l]->inverser(uv,xyz);
155  CT_FACE* fac=lstface.getid(lstfac[l]->get_id());
156  if (uv[0]>fac->get_umax()) fac->change_umax(uv[0]);
157  if (uv[0]<fac->get_umin()) fac->change_umin(uv[0]);
158  if (uv[1]>fac->get_vmax()) fac->change_vmax(uv[1]);
159  if (uv[1]<fac->get_vmin()) fac->change_vmin(uv[1]);
160  double cmin,cmax;
161  lstfac[l]->get_courbure(uv,cmax,cmin);
162  cmax=fabs(cmax);
163  if (cmax>courbure) courbure=cmax;
164  }
165  double dn=densdep;
166  double dntmp;
167  if (!(OPERATEUR::egal(courbure,0.0,1e-8))) dntmp=sqrt(8*epsilon/courbure);
168  else dntmp=1e308;
169  if (dntmp>dng) dn=dng;
170  else dn=dntmp;
171  if (densdep<dn) dn=densdep;
172  double dist=zonezoom*(dng-dn);
173  if (!(OPERATEUR::egal(dist,0.0,1e-8)))
174  {
175  BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
176  DOUBLEN<1> ecart(&dn);
177  CT_POINT<1>* pt=new CT_POINT<1>(xyz[0],xyz[1],xyz[2],ecart,boite);
178  lstpoint.ajouter(pt);
179  }
180  double dxyz[3];
181  arete->deriver(t,dxyz);
182  t=t+dntmp/sqrt(dxyz[0]*dxyz[0]+dxyz[1]*dxyz[1]+dxyz[2]*dxyz[2]);
183  if (t>tmax)
184  {
185  t=tmax;
186  ok++;
187  }
188  }
189  while (ok<2);
190  }
191  delete [] lstfac;
192  }
193 
194  for (int j=0;j<nb_face;j++)
195  {
196  MG_FACE* face=mggeo->get_mg_face(j);
197  if (mggt!=NULL)
198  if (lst.existe(face)==0) continue;
199  CT_FACE* cface=lstface.getid(face->get_id());
200  double umin=cface->get_umin();
201  double vmin=cface->get_vmin();
202  double umax=cface->get_umax();
203  double vmax=cface->get_vmax();
204  if (pas_echantillon!=-1)
205  {
206  for (int k=0;k<pas_echantillon+1;k++)
207  for (int l=0;l<pas_echantillon+1;l++)
208  {
209  double uv[2];
210  uv[0]=umin+1.0*k/pas_echantillon*(umax-umin);
211  uv[1]=vmin+1.0*l/pas_echantillon*(vmax-vmin);
212  double xyz[3];
213  face->evaluer(uv,xyz);
214  if (xyz[0]<xmin) xmin=xyz[0];
215  if (xyz[1]<ymin) ymin=xyz[1];
216  if (xyz[2]<zmin) zmin=xyz[2];
217  if (xyz[0]>xmax) xmax=xyz[0];
218  if (xyz[1]>ymax) ymax=xyz[1];
219  if (xyz[2]>zmax) zmax=xyz[2];
220  double cmax,cmin;
221  face->get_courbure(uv,cmax,cmin);
222  cmax=fabs(cmax);
223  double dn;
224  if (!(OPERATEUR::egal(cmax,0.0,1e-8))) dn=sqrt(8*epsilon/cmax);
225  else dn=dng;
226  if (dn>dng) dn=dng;
227  double dist=zonezoom*(dng-dn);
228  if (!(OPERATEUR::egal(dist,0.0,1e-8)))
229  {
230  BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
231  DOUBLEN<1> ecart(&dn);
232  CT_POINT<1>* pt=new CT_POINT<1>(xyz[0],xyz[1],xyz[2],ecart,boite);
233  lstpoint.ajouter(pt);
234  }
235  }
236  }
237  else
238  {
239  double uv[2];
240  double udepnou;
241  double vdepnou;
242  double udep=umin;
243  double vdep=vmin;
244  uv[0]=udep;
245  uv[1]=vdep;
246  double xyz[3];
247  int ok=0;
248  do
249  {
250  face->evaluer(uv,xyz);
251  if (xyz[0]<xmin) xmin=xyz[0];
252  if (xyz[1]<ymin) ymin=xyz[1];
253  if (xyz[2]<zmin) zmin=xyz[2];
254  if (xyz[0]>xmax) xmax=xyz[0];
255  if (xyz[1]>ymax) ymax=xyz[1];
256  if (xyz[2]>zmax) zmax=xyz[2];
257  double cmax,cmin;
258  face->get_courbure(uv,cmax,cmin);
259  cmax=fabs(cmax);
260  double dn,dntmp;
261  if (!(OPERATEUR::egal(cmax,0.0,1e-8))) dntmp=sqrt(8*epsilon/cmax);
262  else dntmp=1e308;
263  if (dntmp>dng) dn=dng;
264  else dn=dntmp;
265  double dist=zonezoom*(dng-dn);
266  if (!(OPERATEUR::egal(dist,0.0,1e-8)))
267  {
268  BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
269  DOUBLEN<1> ecart(&dn);
270  CT_POINT<1>* pt=new CT_POINT<1>(xyz[0],xyz[1],xyz[2],ecart,boite);
271  lstpoint.ajouter(pt);
272  }
273  double dxyzdu[3];
274  double dxyzdv[3];
275  face->deriver(uv,dxyzdu,dxyzdv);
276  if (ok==-1) ok=6;
277  if (ok==0)
278  {
279  udepnou=uv[0]+dntmp/sqrt(dxyzdu[0]*dxyzdu[0]+dxyzdu[1]*dxyzdu[1]+dxyzdu[2]*dxyzdu[2]);
280  vdepnou=uv[1]+dntmp/sqrt(dxyzdv[0]*dxyzdv[0]+dxyzdv[1]*dxyzdv[1]+dxyzdv[2]*dxyzdv[2]);
281  if (udepnou>umax) udepnou=umax;
282  if (vdepnou>vmax) vdepnou=vmax;
283  ok=1;
284  }
285  if (ok==1)
286  {
287  uv[0]=uv[0]+dntmp/sqrt(dxyzdu[0]*dxyzdu[0]+dxyzdu[1]*dxyzdu[1]+dxyzdu[2]*dxyzdu[2]);
288  if (uv[0]>umax)
289  {
290  uv[0]=umax;
291  ok=2;
292  }
293  }
294  else if (ok==2)
295  {
296  uv[0]=udep;
297  uv[1]=vdepnou;
298  ok=3;
299  if (uv[1]+1e-10>vmax) ok=4;
300  }
301  else if (ok==3)
302  {
303  uv[1]=uv[1]+dntmp/sqrt(dxyzdv[0]*dxyzdv[0]+dxyzdv[1]*dxyzdv[1]+dxyzdv[2]*dxyzdv[2]);
304  if (uv[1]>vmax)
305  {
306  uv[1]=vmax;
307  ok=4;
308  }
309  }
310  else if (ok==4)
311  {
312  udep=udepnou;
313  vdep=vdepnou;
314  uv[0]=udep;
315  uv[1]=vdep;
316  if ((udep+1e-10>umax) && (vdep+1e-10>vmax))
317  ok=-1;
318  else
319  ok=0;
320  }
321  }
322  while (ok<5);
323  }
324 
325  }
326  }
327  //insertion des points de controles
328  for (int i=0;i<nb_pt_ctrl;i++)
329  {
330  double xyz[3];
331  xyz[0]=point_controle[4*i];
332  xyz[1]=point_controle[4*i+1];
333  xyz[2]=point_controle[4*i+2];
334  double dn=point_controle[4*i+3];
335  double dist=zonezoom*(dng-dn);
336  BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
337  DOUBLEN<1> ecart(&dn);
338  CT_POINT<1>* pt=new CT_POINT<1>(xyz[0],xyz[1],xyz[2],ecart,boite);
339  lstpoint.ajouter(pt);
340  }
341 }
342 
343 
344 
345 
346 void FCT_GENERATEUR_FRONTIERE::construit(int pas_echan,int pas_estima,MG_GROUPE_TOPOLOGIQUE* mggt)
347 {
348  pas_echantillon=pas_echan;
349  pas_estimation=pas_estima;
350  echantillonner(mggt);
351  estimation();
352 }
353 
354 
355 #pragma package(smart_init)
356 
357 
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::xmax
double xmax
Definition: fct_generateur_echantillonage_estimation.h:51
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::estimation
virtual void estimation(void)
Definition: fct_generateur_echantillonage_estimation.cpp:46
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::lstpoint
TPL_LISTE_ENTITE< CT_POINT< 1 > * > lstpoint
Definition: fct_generateur_echantillonage_estimation.h:52
CT_FACE::get_umin
double get_umin(void)
Definition: ct_face.cpp:49
CT_FACE::change_umax
void change_umax(double val)
Definition: ct_face.cpp:65
gestionversion.h
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
TPL_MAP_ENTITE< MG_ELEMENT_TOPOLOGIQUE * >
MG_ARETE::evaluer
virtual void evaluer(double t, double *xyz)
Definition: mg_arete.cpp:143
mg_gestionnaire.h
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
MG_GEOMETRIE::get_nb_mg_arete
unsigned int get_nb_mg_arete(void)
Definition: mg_geometrie.cpp:813
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::xmin
double xmin
Definition: fct_generateur_echantillonage_estimation.h:50
robustPredicates::epsilon
static REAL epsilon
Definition: robustpredicates.cc:371
MG_GESTIONNAIRE::get_nb_mg_geometrie
unsigned int get_nb_mg_geometrie(void)
Definition: mg_gestionnaire.cpp:358
ct_face.h
FCT_GENERATEUR_FRONTIERE::point_controle
double * point_controle
Definition: fct_generateur_frontiere.h:45
MG_COARETE::get_boucle
virtual MG_BOUCLE * get_boucle(void)
Definition: mg_coarete.cpp:53
TPL_MAP_ENTITE::existe
virtual int existe(X x)
Definition: tpl_map_entite.h:61
CT_FACE::change_vmin
void change_vmin(double val)
Definition: ct_face.cpp:80
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
FCT_GENERATEUR_FRONTIERE::FCT_GENERATEUR_FRONTIERE
FCT_GENERATEUR_FRONTIERE(class MG_GESTIONNAIRE &mggest, double dn, double eps, int ind1=4, double ind2=0.25, double *lst_pt_ctrl=NULL, int nbpt=0)
Definition: fct_generateur_frontiere.cpp:38
CT_POINT
Definition: ct_point.h:31
MG_ARETE::get_tmin
virtual double get_tmin(void)
Definition: mg_arete.cpp:179
MG_FACE::deriver
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
Definition: mg_face.cpp:199
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
CT_FACE::change_umin
void change_umin(double val)
Definition: ct_face.cpp:75
fct_generateur_frontiere.h
MG_ARETE::get_nb_mg_coarete
virtual int get_nb_mg_coarete(void)
Definition: mg_arete.cpp:106
MG_FACE::evaluer
virtual void evaluer(double *uv, double *xyz)
Definition: mg_face.cpp:192
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::ymax
double ymax
Definition: fct_generateur_echantillonage_estimation.h:51
CT_FACE::change_vmax
void change_vmax(double val)
Definition: ct_face.cpp:70
OPERATEUR::egal
static int egal(double a, double b, double eps)
Definition: ot_mathematique.cpp:1629
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::zonezoom
double zonezoom
Definition: fct_generateur_echantillonage_estimation.h:46
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::ymin
double ymin
Definition: fct_generateur_echantillonage_estimation.h:50
MG_GEOMETRIE::get_mg_arete
MG_ARETE * get_mg_arete(unsigned int num)
Definition: mg_geometrie.cpp:800
CT_FACE::get_umax
double get_umax(void)
Definition: ct_face.cpp:44
CT_FACE
Definition: ct_face.h:29
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
MG_BOUCLE::get_mg_face
virtual MG_FACE * get_mg_face(void)
Definition: mg_boucle.cpp:102
FCT_GENERATEUR_FRONTIERE::construit
void construit(int pas_echan=20, int pas_estima=20, class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: fct_generateur_frontiere.cpp:346
MG_GEOMETRIE::get_mg_face
MG_FACE * get_mg_face(unsigned int num)
Definition: mg_geometrie.cpp:1251
FCT_GENERATEUR_FRONTIERE::gest
MG_GESTIONNAIRE & gest
Definition: fct_generateur_frontiere.h:43
MG_ARETE::get_M
virtual double get_M(double t)
Definition: mg_arete.cpp:205
MG_GEOMETRIE::get_nb_mg_face
unsigned int get_nb_mg_face(void)
Definition: mg_geometrie.cpp:1264
FCT_GENERATEUR_FRONTIERE::~FCT_GENERATEUR_FRONTIERE
~FCT_GENERATEUR_FRONTIERE()
Definition: fct_generateur_frontiere.cpp:42
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
TPL_MAP_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_map_entite.h:55
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::zmin
double zmin
Definition: fct_generateur_echantillonage_estimation.h:50
TPL_MAP_ENTITE::getid
virtual X getid(unsigned long num)
Definition: tpl_map_entite.h:96
FCT_GENERATEUR_FRONTIERE::nb_pt_ctrl
int nb_pt_ctrl
Definition: fct_generateur_frontiere.h:46
BOITE_3D
Definition: ot_boite_3d.h:27
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::pas_echantillon
int pas_echantillon
Definition: fct_generateur_echantillonage_estimation.h:44
sqrt
double2 sqrt(double2 &val)
Definition: ot_doubleprecision.cpp:345
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
CT_FACE::get_vmax
double get_vmax(void)
Definition: ct_face.cpp:54
FCT_GENERATEUR_FRONTIERE::epsilon
double epsilon
Definition: fct_generateur_frontiere.h:44
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::pas_estimation
int pas_estimation
Definition: fct_generateur_echantillonage_estimation.h:45
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::zmax
double zmax
Definition: fct_generateur_echantillonage_estimation.h:51
MG_GEOMETRIE
Definition: mg_geometrie.h:84
OT_VECTEUR_3D::get_longueur
virtual double get_longueur(void) const
Definition: ot_mathematique.cpp:483
MG_FACE::get_courbure
virtual void get_courbure(double *uv, double &cmax, double &cmin)
Definition: mg_face.cpp:313
CT_FACE::get_vmin
double get_vmin(void)
Definition: ct_face.cpp:59
ct_point.h
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_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
DOUBLEN< 1 >
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION
Definition: fct_generateur_echantillonage_estimation.h:31
MG_GESTIONNAIRE::get_mg_geometrie
MG_GEOMETRIE * get_mg_geometrie(unsigned int num)
Definition: mg_gestionnaire.cpp:331
FCT_GENERATEUR_ECHANTILLONAGE_ESTIMATION::dng
double dng
Definition: fct_generateur_echantillonage_estimation.h:48
MG_ARETE::get_tmax
virtual double get_tmax(void)
Definition: mg_arete.cpp:184
MG_ARETE::get_mg_coarete
virtual MG_COARETE * get_mg_coarete(int num)
Definition: mg_arete.cpp:228
FCT_GENERATEUR_FRONTIERE::echantillonner
void echantillonner(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: fct_generateur_frontiere.cpp:47