Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. // TAD QRY
  2. if(linhaQry[0] == 'm' && linhaQry[1] == 'p' && linhaQry[2] == 'l' && linhaQry[3] == 'g')
  3. {
  4. char arq[100];char dirOO[100];char linhaPol[100];char pol[999999];char x[100],y[100];
  5. int i;
  6. void **VetPonto;int tamanho = 0;
  7. sscanf(linhaQry,"mplg? %s",arq);
  8. strcpy(dirOO,dirO);
  9. strcpy(arq,strcat(dirOO,arq));
  10. arqPoligono = fopen(arq, "r");
  11. printf("\n\n\narq:%s\n\n\n",arq);
  12. if(arqPoligono == NULL){
  13. perror("ErroPol: ");
  14. system("pause");
  15. exit(1);
  16. }
  17. strcpy(pol,"");
  18. while(fgets(linhaPol, 500, arqPoligono) != NULL){
  19. tamanho++;
  20. sscanf(linhaPol,"%s %s",x,y);
  21. //printf("\n%s",linhaPol);
  22. strcat(pol,x);strcat(pol,",");strcat(pol,y);strcat(pol," ");
  23. }
  24. strcat(pol,"\0");
  25. //printf("\n\n\n%s\n\n\n",pol);
  26. fprintf(arquivosvg2,"<polygon points= '%s'/>\n",pol);
  27. VetPonto = malloc(sizeof(void*)*tamanho);
  28. fseek(arqPoligono,0,SEEK_SET);
  29. i = 0;
  30. while(fgets(linhaPol, 500, arqPoligono) != NULL){
  31. sscanf(linhaPol,"%s %s",x,y);
  32. void* ponto = NewPoint(atof(x),atof(y));
  33. VetPonto[i] = ponto;
  34. //printf("\n\nx:%f,y:%f\n\n",getXPoint(VetPonto[i]),getYPoint(VetPonto[i]));
  35. i++;
  36. }
  37. percorreToPoligonAux(ArvorePredio,verificaDentroPredio,VetPonto,tamanho,arquivosvg2);
  38. percorreToPoligonAux(ArvoreQuadra,verificaDentroQuadra,VetPonto,tamanho,arquivosvg2);
  39. //percorreToPoligonAux(ArvoreRadio,verificaDentroRadio,VetPonto,tamanho,arquivosvg2);
  40. //percorreToPoligonAux(ArvoreHid,verificaDentroHid,VetPonto,tamanho,arquivosvg2);
  41.  
  42. }
  43. //TAD ARVORE
  44. void percorreToPoligon(void *a,void *x,int (*dadosNode)(void*,void**,int,void*,FILE*,void*),void** vetPontos,int tam,FILE *arquivoSVG){
  45. node *this = (node *)a;
  46. tree *b = (tree* )x;
  47. if (this->data == b->nulo)
  48. return;
  49. else
  50. percorreToPoligon(this->left,b,dadosNode,vetPontos,tam,arquivoSVG);
  51. dadosNode(this->data,vetPontos,tam,b,arquivoSVG,this);
  52. percorreToPoligon(this->right,b,dadosNode,vetPontos,tam,arquivoSVG);
  53. }
  54. void percorreToPoligonAux(void *a,int (*dadosNode)(void*,void**,int,void*,FILE*,void*),void** vetPontos,int tam,FILE *arquivoSVG){
  55. tree *aux = (tree *)a;
  56. percorreToPoligon(aux->raiz,aux,dadosNode,vetPontos,tam,arquivoSVG);
  57. }
  58. //TAD PREDIO
  59. int verificaDentroPredio(void* data,void** vetPontos,int tam,void* T,FILE *arquivoSVG,void* node){
  60. dadosPredio *predio = data;
  61. void* p1 = NewPoint(predio->x,predio->y);
  62. void* p2 = NewPoint(predio->x+predio->w,predio->y);
  63. void* p3 = NewPoint(predio->x,predio->y+predio->h);
  64. void* p4 = NewPoint(predio->x+predio->w,predio->y+predio->h);
  65. if(InsidePolygon(vetPontos,tam,p1) == 1 && InsidePolygon(vetPontos,tam,p2) == 1 && InsidePolygon(vetPontos,tam,p3) == 1 && InsidePolygon(vetPontos,tam,p4) == 1){
  66. 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);
  67. }
  68. return 0;
  69. }
  70. //TAD QUADRA
  71. int verificaDentroQuadra(void* data,void** vetPontos,int tam,void* T,FILE *arquivoSVG,void* node){
  72. dadosQuadra *quadra = data;
  73. void* p1 = NewPoint(quadra->x,quadra->y);
  74. void* p2 = NewPoint(quadra->x+quadra->w,quadra->y);
  75. void* p3 = NewPoint(quadra->x,quadra->y+quadra->h);
  76. void* p4 = NewPoint(quadra->x+quadra->w,quadra->y+quadra->h);
  77. if(InsidePolygon(vetPontos,tam,p1) == 1 && InsidePolygon(vetPontos,tam,p2) == 1 && InsidePolygon(vetPontos,tam,p3) == 1 && InsidePolygon(vetPontos,tam,p4) == 1){
  78. 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);
  79. }
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement