Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TAD QRY
- if(linhaQry[0] == 'm' && linhaQry[1] == 'p' && linhaQry[2] == 'l' && linhaQry[3] == 'g')
- {
- char arq[100];char dirOO[100];char linhaPol[100];char pol[999999];char x[100],y[100];
- int i;
- void **VetPonto;int tamanho = 0;
- sscanf(linhaQry,"mplg? %s",arq);
- strcpy(dirOO,dirO);
- strcpy(arq,strcat(dirOO,arq));
- arqPoligono = fopen(arq, "r");
- printf("\n\n\narq:%s\n\n\n",arq);
- if(arqPoligono == NULL){
- perror("ErroPol: ");
- system("pause");
- exit(1);
- }
- strcpy(pol,"");
- while(fgets(linhaPol, 500, arqPoligono) != NULL){
- tamanho++;
- sscanf(linhaPol,"%s %s",x,y);
- //printf("\n%s",linhaPol);
- strcat(pol,x);strcat(pol,",");strcat(pol,y);strcat(pol," ");
- }
- strcat(pol,"\0");
- //printf("\n\n\n%s\n\n\n",pol);
- fprintf(arquivosvg2,"<polygon points= '%s'/>\n",pol);
- VetPonto = malloc(sizeof(void*)*tamanho);
- fseek(arqPoligono,0,SEEK_SET);
- i = 0;
- while(fgets(linhaPol, 500, arqPoligono) != NULL){
- sscanf(linhaPol,"%s %s",x,y);
- void* ponto = NewPoint(atof(x),atof(y));
- VetPonto[i] = ponto;
- //printf("\n\nx:%f,y:%f\n\n",getXPoint(VetPonto[i]),getYPoint(VetPonto[i]));
- i++;
- }
- percorreToPoligonAux(ArvorePredio,verificaDentroPredio,VetPonto,tamanho,arquivosvg2);
- percorreToPoligonAux(ArvoreQuadra,verificaDentroQuadra,VetPonto,tamanho,arquivosvg2);
- //percorreToPoligonAux(ArvoreRadio,verificaDentroRadio,VetPonto,tamanho,arquivosvg2);
- //percorreToPoligonAux(ArvoreHid,verificaDentroHid,VetPonto,tamanho,arquivosvg2);
- }
- //TAD ARVORE
- void percorreToPoligon(void *a,void *x,int (*dadosNode)(void*,void**,int,void*,FILE*,void*),void** vetPontos,int tam,FILE *arquivoSVG){
- node *this = (node *)a;
- tree *b = (tree* )x;
- if (this->data == b->nulo)
- return;
- else
- percorreToPoligon(this->left,b,dadosNode,vetPontos,tam,arquivoSVG);
- dadosNode(this->data,vetPontos,tam,b,arquivoSVG,this);
- percorreToPoligon(this->right,b,dadosNode,vetPontos,tam,arquivoSVG);
- }
- void percorreToPoligonAux(void *a,int (*dadosNode)(void*,void**,int,void*,FILE*,void*),void** vetPontos,int tam,FILE *arquivoSVG){
- tree *aux = (tree *)a;
- percorreToPoligon(aux->raiz,aux,dadosNode,vetPontos,tam,arquivoSVG);
- }
- //TAD PREDIO
- int verificaDentroPredio(void* data,void** vetPontos,int tam,void* T,FILE *arquivoSVG,void* node){
- dadosPredio *predio = data;
- void* p1 = NewPoint(predio->x,predio->y);
- void* p2 = NewPoint(predio->x+predio->w,predio->y);
- void* p3 = NewPoint(predio->x,predio->y+predio->h);
- void* p4 = NewPoint(predio->x+predio->w,predio->y+predio->h);
- if(InsidePolygon(vetPontos,tam,p1) == 1 && InsidePolygon(vetPontos,tam,p2) == 1 && InsidePolygon(vetPontos,tam,p3) == 1 && InsidePolygon(vetPontos,tam,p4) == 1){
- fprintf(arquivoSVG,"\t<rect x='%f' y='%f' width='%f' height='%f' stroke='red' fill='red' stroke-width='5'/>\n",predio->x,predio->y,predio->w,predio->h);
- }
- return 0;
- }
- //TAD QUADRA
- int verificaDentroQuadra(void* data,void** vetPontos,int tam,void* T,FILE *arquivoSVG,void* node){
- dadosQuadra *quadra = data;
- void* p1 = NewPoint(quadra->x,quadra->y);
- void* p2 = NewPoint(quadra->x+quadra->w,quadra->y);
- void* p3 = NewPoint(quadra->x,quadra->y+quadra->h);
- void* p4 = NewPoint(quadra->x+quadra->w,quadra->y+quadra->h);
- if(InsidePolygon(vetPontos,tam,p1) == 1 && InsidePolygon(vetPontos,tam,p2) == 1 && InsidePolygon(vetPontos,tam,p3) == 1 && InsidePolygon(vetPontos,tam,p4) == 1){
- fprintf(arquivoSVG,"\t<rect x='%f' y='%f' width='%f' height='%f' stroke='%s' fill='%s' stroke-width='5'/>\n",quadra->x,quadra->y,quadra->w,quadra->h,quadra->cstrk,quadra->cfill);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement