#include "diabolo.h" #include "foyer.h" void fit_foyer(void); #define indicemax 500 static int bolo,indice; static double carte[nb_max_bolo][6]; // pour sommer chaque subscan //-------------------- fonction exec de la fenetre : foyer ------------------------------- void exec_foyer(int fen,int item,double valeur,...) { switch(item) { case ouverture : gg->trace_ouvert=gg->trace_ouvert | 16 ; selectgra(fen); graph->taille_graduations=7; indice=0; bolo=litD(fen,foy_bolo,0); break; case fermeture : gg->trace_ouvert=gg->trace_ouvert & (255-16); // enleve le 16 break; case foy_pas : case foy_bolo : bolo=litD(fen,foy_bolo,0); fit_foyer(); break; default : break; } } void trace_foyer(double *y) { int j; // gg->compte_subscan contient le N° de subscan et est negatif entre 2 subscans if( (gg->compte_subscan<1) ou (gg->compte_subscan>6) ) { if(indice>0) { int s=-gg->compte_subscan; if( (s>=1) && (s<=6) ) { for(j=0;j valeur x[%d]=%g \n",bolo,carte[bolo-1][s-1]); } } if( (indice>0) && (gg->compte_subscan==-6) ) fit_foyer(); indice=0; // printf("ne trace pas un point (entre 2 subscans) \n"); return; } if(indice==0) { printf("debut subscan %d ",gg->compte_subscan); selectgra(fenetre_annexe); graph->couleur_trace=gg->compte_subscan+1; style(fenetre_annexe); for(j=0;jcompte_subscan-1]=0; } printf("%d ",indice); for(j=0;jcompte_subscan-1]+=y[j]; trace(fenetre_annexe,indice,y[bolo-1]); if(indicecouleur_trace=rouge; graph->couleur_texte=violet;graph->taille_texte=16; graph->type_symbole=rondplein;graph->taille_symbole=5;graph->ligne_trace=0; style(fenetre_annexe); for(i=0;i<3;i++) trace(fenetre_annexe,xcorr(i),carte[bolo-1][i]); for(i=0;i<3;i++) trace(fenetre_annexe,xcorr(i),carte[bolo-1][5-i]); graph->type_symbole=rien;graph->ligne_trace=1; graph->couleur_trace=bleu; style(fenetre_annexe); for(x=-0.4;x<2.4;x+=0.05) trace(fenetre_annexe,xcorr(x),a*x*x+b*x+c); autox(fenetre_annexe);autoy(fenetre_annexe);retrace(fenetre_annexe); place(fenetre_annexe,-0.9,3*a+b+c); sprintf(ss,"correction %4.1f",xmini); texte(fenetre_annexe,0,ss); }