84 char*
res=fgets(message,255,in);
86 res=fgets(message,255,in);
87 sscanf(message,
"%lf ",&
dng);
90 res=fgets(message,255,in);
94 int nb=sscanf(message,
"%lf %lf %lf %lf %lf %lf ",&x,&y,&z,&coef,&lambda,&courbure);
96 double dist=
dng*(1-coef)*lambda;
97 BOITE_3D boite(x-dist,y-dist,z-dist,x+dist,y+dist,z+dist);
122 double x, dx, y, z, fx, dc1, dc2, ds, emoins, eplus, er_crt, rm, Eprimmoins, Eprimplus, cmin, cmax = 0;
123 int i, div, div1, div2, n_min =0;
137 for (i=0;i<100;i++) clarge[i]=0;
139 for (i=0;i<100;i++) elarge[i]=0;
154 for (c[0]=-50-2*dc1;c[0]<50;c[0]+=dc1)
157 eval_erreur(fonction, eni, c[0],er_crt, type, elarge[i], emoins, eplus,dx);
160 Eprim[0]=(elarge[i]-elarge[i-1])/dc1;
162 if (Eprim[0]*Eprim[1]<0 && i>1)
164 clarge[n_min]=c[0]-dc1;
165 clarge[n_min+1]=c[0];
183 if (i<2) Eprim[i] = 1;
184 if (i<2) Esec[i] = 0;
197 for (
int nm=0; nm<n_min; nm++)
221 c[0]=(E[3]*c[2]+E[2]*c[3])/(E[3]+E[2]);
224 else c[0] = -E[1]/Eprim[1] + c[1];
230 c[0]=(Eprim[3]*c[2]+Eprim[2]*c[3])/(Eprim[3]+Eprim[2]);
233 else c[0] = -Eprim[1]/Esec[1] + c[1];
243 if (c[0] > cmax) c[0]=cmax;
244 if (c[0] < cmin) c[0]=cmin;
246 eval_erreur(fonction, eni, c[0],er_crt, type, E[0], emoins, eplus,dx);
250 Eprim[0] = (eplus - emoins) / (2 * dc2);
253 Eprimmoins=(E[0]-emoins)/dc2;
254 Eprimplus=(eplus-E[0])/dc2;
256 Esec[0]=(Eprimplus-Eprimmoins)/dc2;
279 else if (E[0] < E[3] || i==1)
288 if (fabs(Eprim[0]) < fabs(Eprim[2]))
297 else if (fabs(Eprim[0]) < fabs(Eprim[3]))
316 if (div && (fabs(Eprim[0])<0.000000001 || E[2]<0.000000001 || i>150))
326 if (minim[0][1]<minim[1][1]) {
327 clarge[nm]=minim[0][0];
328 elarge[nm]=minim[0][1];
331 clarge[nm]=minim[1][0];
332 elarge[nm]=minim[1][1];
339 else if (elarge[nm]<er) {
357 eval_erreur(fonction, eni, cr, er_crt, type, E[0],emoins, eplus,dx,1);
367 double x, dx, y, z, dc, er_crt, rm, emoins, eplus = 0;
394 for (c[0]=-15;c[0]<15;c[0]+=dc)
398 eval_erreur(fonction, eni, c[0],er_crt, type, E[0], emoins, eplus,dx);
416 else if (E[0] < E[3])
439 eval_erreur(fonction, eni, cr, er_crt, type, E[0],emoins, eplus,dx,1);
502 boitep.
reinit(x-dist,y-dist,z-dist,x+dist,y+dist,z+dist);
517 n = std::max(1., floor(2 * delta / ds - 0.0001) + 1);
525 for (cp1 =
a;cp1<b;cp1++)
529 boitep.
reinit(x-dist,y-dist,z-dist,x+dist,y+dist,z+dist);
545 n = std::max(1., floor(2 * delta / ds - 0.0001) + 1);
553 for (cp1 =
a;cp1<b;cp1++)
555 for (cp2 =
a;cp2<b;cp2++)
560 boitep.
reinit(x-dist,y-dist,z-dist,x+dist,y+dist,z+dist);
573 if (stockage_fichier)
582 fprintf(in,
"%lf\n",
dng);
583 double coef= eni/
dng;
587 for (cp1=0;cp1<nb_point;cp1++)
591 fprintf(in,
"%lf %lf %lf %lf %lf %lf\n",coord[0],coord[1],coord[2],coef,
zonezoom,courb);
613 for (x = 0;x<delta;x+=dx * delta)
636 for (cpd=0;cpd<0.6;cpd+=0.5)
638 for (x = 0;x<delta;x+=dx * delta)
641 en =
estimer(x,cpd*ds,0,courb);
642 enm =
estimer(x,cpd*ds,0,courb-dc);
643 enp =
estimer(x,cpd*ds,0,courb+dc);
661 for (cpd=0;cpd<0.6;cpd+=0.5)
663 for (x = 0;x<delta;x+=dx * delta)
666 en =
estimer(x,cpd*ds,cpd*ds,courb);
667 enm =
estimer(x,cpd*ds,cpd*ds,courb-dc);
668 enp =
estimer(x,cpd*ds,cpd*ds,courb+dc);
707 double enmax=(1+err)*eni;
711 if (c<=0.0001) r = (enmax-eni)/(
zonetrans*(
dng-enmax)-eni+enmax);
730 for (i=0;i<
f[0]+1;i++)
742 else fx = eni + (
dng - eni) * (x/delta);
754 #pragma package(smart_init)