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)
52 std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
56 ele->get_topologie_sousjacente(&lst);
62 for (
int i=0;i<nb_geo;i++)
67 for (
int j=0;j<nb_face;j++)
78 for (
int j=0;j<nb_arete;j++)
82 if (lst.
existe(arete)==0)
continue;
86 double tdemi=0.5*(tmax+tmin);
87 double xyz1[3],xyz2[3];
93 for (
int k=0;k<nbfac;k++)
107 double courbure=arete->
get_M(t);
108 for (
int l=0;l<nbfac;l++)
120 if (cmax>courbure) courbure=cmax;
126 if (densdep<dn) dn=densdep;
130 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
150 double courbure=arete->
get_M(t);
151 for (
int l=0;l<nbfac;l++)
163 if (cmax>courbure) courbure=cmax;
171 if (densdep<dn) dn=densdep;
175 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
182 t=t+dntmp/
sqrt(dxyz[0]*dxyz[0]+dxyz[1]*dxyz[1]+dxyz[2]*dxyz[2]);
194 for (
int j=0;j<nb_face;j++)
198 if (lst.
existe(face)==0)
continue;
230 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
268 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
275 face->
deriver(uv,dxyzdu,dxyzdv);
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;
287 uv[0]=uv[0]+dntmp/
sqrt(dxyzdu[0]*dxyzdu[0]+dxyzdu[1]*dxyzdu[1]+dxyzdu[2]*dxyzdu[2]);
299 if (uv[1]+1e-10>vmax) ok=4;
303 uv[1]=uv[1]+dntmp/
sqrt(dxyzdv[0]*dxyzdv[0]+dxyzdv[1]*dxyzdv[1]+dxyzdv[2]*dxyzdv[2]);
316 if ((udep+1e-10>umax) && (vdep+1e-10>vmax))
336 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
355 #pragma package(smart_init)
void change_vmax(double val)
void change_vmin(double val)
void change_umin(double val)
void change_umax(double val)
TPL_LISTE_ENTITE< CT_POINT< 1 > * > lstpoint
virtual void estimation(void)
void construit(int pas_echan=20, int pas_estima=20, class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
void echantillonner(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
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)
~FCT_GENERATEUR_FRONTIERE()
virtual double get_tmax(void)
virtual double get_tmin(void)
virtual void deriver(double t, double *xyz)
virtual void evaluer(double t, double *xyz)
virtual double get_M(double t)
virtual MG_COARETE * get_mg_coarete(int num)
virtual int get_nb_mg_coarete(void)
virtual MG_FACE * get_mg_face(void)
virtual MG_BOUCLE * get_boucle(void)
virtual void get_courbure(double *uv, double &cmax, double &cmin)
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
virtual void evaluer(double *uv, double *xyz)
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
unsigned int get_nb_mg_arete(void)
unsigned int get_nb_mg_face(void)
MG_ARETE * get_mg_arete(unsigned int num)
MG_FACE * get_mg_face(unsigned int num)
MG_GEOMETRIE * get_mg_geometrie(unsigned int num)
unsigned int get_nb_mg_geometrie(void)
virtual MG_ELEMENT_TOPOLOGIQUE * get_premier(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
virtual MG_ELEMENT_TOPOLOGIQUE * get_suivant(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
static int egal(double a, double b, double eps)
virtual double get_longueur(void) const
virtual void ajouter(X x)
virtual X getid(unsigned long num)
virtual void ajouter(X x)
double2 sqrt(double2 &val)