#include #include #include struct Plot_{ char *dir; char *name; int iteracao; int nBoxes; }; Plot_t *openPlot(char *dir,char *name,int nBoxes,int iteracao) { Plot_t *novo = malloc(sizeof(Plot_t)); novo->dir = dir; novo->name = name; novo->iteracao = iteracao; novo->nBoxes = nBoxes; makeDir(dir,name,"rectangles"); makeDir(dir,name,"line_dmin"); makeDir(dir,name,"line_dmax"); return novo; } void drawRectangles(Plot_t *plot,candidato_t *prim,QFILA_t qual) { char *filename=NULL; asprintf(&filename,"%s/%s/Animacao/rectangles/%07d.txt",plot->dir,plot->name,plot->iteracao); FILE *arq=fopen(filename,"w"); candidato_t *aux = prim; int cont = 0; while ((aux != NULL) && (cont < plot->nBoxes)) { fprintf(arq,"%d %f %f\n",cont, aux->distLo, aux->distHi); aux = aux->prox[qual]; cont++; } fclose(arq); free(filename); } void drawLine(Plot_t *plot,char*which,float val) { char *filename = NULL; asprintf(&filename,"%s/%s/Animacao/line_%s/%07d.txt",plot->dir,plot->name,which,plot->iteracao); FILE *arq = fopen(filename,"w"); fprintf(arq,"%d %f\n",-1,val); fprintf(arq,"%d %f\n",plot->nBoxes+1,val); fclose(arq); free(filename); } void closePlot(Plot_t *plot) { free(plot); } void makeDir(char *dir,char *name,char *which) { char *filename=NULL; asprintf(&filename,"%s/%s/Animacao/%s",dir,name,which); mkdir(filename, S_IRWXU+S_IXGRP+S_IXOTH); free(filename); }