32 int nytmp,
int nztmp,
char *nomsolution,
double eps,
double ind1,
double ind2,
double *lst_pt_ctrl,
int nbpt):
34 nytmp, nztmp, nomsolution, ind1, ind2),
epsilon(eps),point_controle(lst_pt_ctrl),nb_pt_ctrl(nbpt)
53 double xmin=1e308,ymin=1e308,zmin=1e308,xmax=-1e308,ymax=-1e308,zmax=-1e308;
56 for (
int j=0;j<nb_face;j++)
67 for (
int j=0;j<nb_arete;j++)
70 std::vector<MG_FACE*> vector_mgface;
79 int nbfac = vector_mgface.size();
82 double tdemi=0.5*(tmax+tmin);
83 double xyz1[3],xyz2[3];
88 for (
int k=0;k<
fechan+1;k++)
90 double t=tmin+1.0*k/
fechan*(tmax-tmin);
93 if (xyz[0]<xmin) xmin=xyz[0];
94 if (xyz[0]>xmax) xmax=xyz[0];
95 if (xyz[1]<ymin) ymin=xyz[1];
96 if (xyz[1]>ymax) ymax=xyz[1];
97 if (xyz[2]<zmin) zmin=xyz[2];
98 if (xyz[2]>zmax) zmax=xyz[2];
99 double courbure=arete->
get_M(t);
100 for (
int l=0;l<nbfac;l++)
103 vector_mgface[l]->inverser(uv,xyz);
111 vector_mgface[l]->get_courbure(uv,cmax,cmin);
113 if (cmax>courbure) courbure=cmax;
127 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
135 for (
int j=0;j<nb_face;j++)
153 for (
int k=0;k<
fechan+1;k++)
154 for (
int l=0;l<
fechan+1;l++)
157 uv[0]=umin+1.0*k/
fechan*(umax-umin);
158 uv[1]=vmin+1.0*l/
fechan*(vmax-vmin);
161 if (xyz[0]<xmin) xmin=xyz[0];
162 if (xyz[1]<ymin) ymin=xyz[1];
163 if (xyz[2]<zmin) zmin=xyz[2];
164 if (xyz[0]>xmax) xmax=xyz[0];
165 if (xyz[1]>ymax) ymax=xyz[1];
166 if (xyz[2]>zmax) zmax=xyz[2];
179 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
191 sprintf(message,
" Nombre de points d'échantillonage sur les entites %d",nbptech);
202 BOITE_3D boite(xyz[0]-dist,xyz[1]-dist,xyz[2]-dist,xyz[0]+dist,xyz[1]+dist,xyz[2]+dist);
208 sprintf(message,
" Nombre de points d'échantillonage depuis le fichier %d",nbptech);
211 BOITE_3D boi(xmin,ymin,zmin,xmax,ymax,zmax);
220 int nx=pow(nbechan,0.33333333333333333)+1;
228 double ecart=PT->get_valeur();
229 BOITE_3D boite(xyz[0],xyz[1],xyz[2],xyz[0],xyz[1],xyz[2]);
241 PT->change_etat(
false);
void change_grosseur(double f)
void change_vmax(double val)
void change_vmin(double val)
void change_umin(double val)
void change_umax(double val)
virtual void evaluer(double *xyz)
void change_valeur(double val)
TPL_MAP_ENTITE< CT_POINT_ECHANTILLONNAGE * > lstpoint
TPL_OCTREE< CT_POINT_ECHANTILLONNAGE *, CT_POINT_ECHANTILLONNAGE * > octre
void echantillonnage(void)
TPL_MAP_ENTITE< CT_FACE * > lstface
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ECHANTILLON_FRONTIERE(MG_GESTIONNAIRE *gesttmp, MG_GEOMETRIE *geotmp, double dg, int fechantillon, int nxtmp, int nytmp, int nztmp, char *nomsolution, double eps, double ind1=4, double ind2=0.25, double *lst_pt_ctrl=NULL, int nbpt=0)
~FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ECHANTILLON_FRONTIERE()
double facteur_grossissement
BOITE_3D boite_englobante
void affiche(char *message)
virtual double get_tmax(void)
virtual double get_tmin(void)
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 evaluer(double *uv, double *xyz)
virtual MG_SURFACE * get_surface(void)
unsigned int get_nb_mg_arete(void)
unsigned int get_nb_mg_face(void)
MG_ARETE * get_mg_arete(unsigned int num)
MG_COARETE * get_mg_coareteid(long num)
MG_FACE * get_mg_face(unsigned int num)
MG_FACE * get_mg_faceid(unsigned long num)
virtual int est_periodique_u(void)=0
virtual double get_periode_u(void)=0
virtual int est_periodique_v(void)=0
virtual double get_periode_v(void)=0
static int egal(double a, double b, double eps)
virtual double get_longueur(void) const
virtual void inserer(A a)
virtual TPL_CELLULE_GRILLE< A > * get_cellule(int num)
virtual void initialiser(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, int nb_pasx, int nb_pasy, int nb_pasz)
virtual X get_premier(ITERATEUR &it)
virtual X getid(unsigned long num)
virtual X get_suivant(ITERATEUR &it)
virtual void ajouter(X x)
virtual void inserer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
virtual void initialiser(TPL_LISTE_ENTITE< CONDITION > *lst_entite, int nombre, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
double2 sqrt(double2 &val)