diff --git a/src/delaunay.c b/src/delaunay.c index 812294eb9c845292a511935ee5e20a74e767358b..d66adb16971be4e212848d9268b1041513506d95 100644 --- a/src/delaunay.c +++ b/src/delaunay.c @@ -218,7 +218,7 @@ int arrayContains(int *jAlreadyUsed, int numberOfJ, int j){ return 0; } -void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int *right) { +void clockwiseNextDelaunayEdge(const int *p, const int *q, int *r, const vertex *S, const int *size, int *right) { //0: r not initialized, 1: r is left, 2: r is right *right = 0; double maxAngle; @@ -280,14 +280,13 @@ void delaunayCws(vertex* S, int size) { if(i < j && i < k) { if(isTriangle == 2){ #ifdef OUTPUTFILE - reportTriangle(S[i], S[j], S[k]); + reportTriangle(S[i], S[j], S[k]); #endif } } j = k; } while(j != j0); } - //return delaunayTriangles; } //https://stackoverflow.com/questions/29762048/c-structure-to-string diff --git a/src/delaunay.h b/src/delaunay.h index 8dff37d376d7111218ee75fbff06b5c885517c61..1773204536702b7ae45f6bd7fde89dfce0494630 100644 --- a/src/delaunay.h +++ b/src/delaunay.h @@ -24,7 +24,7 @@ double distance(vertex, vertex); void printPoint(vertex); void delaunayCws(vertex*, int); void write_ppm(const char*); -void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int *right); +void clockwiseNextDelaunayEdge(const int *p, const int *q, int *r, const vertex *S, const int *size, int *right); int firstDelaunayEdgeIncidentTo(int j, vertex* S, int size); char* vertexToString(vertex); circle circleFrom3Points(vertex, vertex, vertex); diff --git a/src/dwyer.c b/src/dwyer.c index 4b09b2042bb7d2062ea6c132f9b75111b84f0a56..1c5ec4fb6d7bab63f131e2ca73733331c2158b82 100644 --- a/src/dwyer.c +++ b/src/dwyer.c @@ -1,4 +1,4 @@ -//#define POSTSCRIPT +#define POSTSCRIPT /****************************************************************/ /* DELAUNAY TRIANGULATION /* VORONOI DIAGRAM @@ -1209,6 +1209,8 @@ printf("[ ] 0 setdash\n"); vp[0] = 0; vp[n+1] = n+1; /* sentinals for sorting routines */ vpsortx(1,n); delete_all_edges(); + printf("test\n"); + fflush(stdout); if (prog == 'g') build_delaunay(vp, 1, n, &left, &right, n); else if (prog != 'c') @@ -1231,7 +1233,8 @@ printf("[ ] 0 setdash\n"); output_voronoi_diagram(left, right); break; case 'd': case 'g': - output_colorful_delaunay_triangulation(left, right); + //output_colorful_delaunay_triangulation(left, right); + output_delaunay_triangulation(left, right); break; } } diff --git a/src/main.c b/src/main.c index 3b42476a722c1c6e0c52130fa84b867ad95b5228..89934b3c81963ad231447faf75a973bf1613c118 100644 --- a/src/main.c +++ b/src/main.c @@ -116,7 +116,47 @@ void readFile(char *file, vertex **v, int *size){ *v = malloc(*size * sizeof(vertex)); printf("Number of Points: %d\n", *size); int i; - for(i = 0; i < *size && fscanf(f, "%lf %lf\n", &(*v)[i].x, &(*v)[i].y) == 2; i++); + double smallestx = .0; + double smallesty = .0; + double biggestx = 1.0; + double biggesty = 1.0; + for(i = 0; i < *size && fscanf(f, "%lf, %lf\n", &(*v)[i].x, &(*v)[i].y) == 2; i++) { + if((*v)[i].x < smallestx) { + smallestx = (*v)[i].x; + } else if ((*v)[i].x > biggestx){ + biggestx = (*v)[i].x; + } + if((*v)[i].y < smallesty) { + smallesty = (*v)[i].y; + } else if((*v)[i].y > biggesty) { + biggesty = (*v)[i].y; + } + } + if(smallestx < .0 || biggestx > 1.0 || smallesty > .0 || biggesty > 1.0) { + biggestx = biggestx - smallestx; + biggesty = biggesty - smallesty; + double biggest; + if(biggestx >= biggesty) { + biggest = biggestx; + } else { + biggest = biggesty; + } + for(int j = 0; j < *size; j++){ + if(smallestx < .0) { + (*v)[j].x = (*v)[j].x - smallestx; + } + if(smallesty < .0) { + (*v)[j].y = (*v)[j].y - smallesty; + } + if(biggest > 1.0){ + (*v)[j].x /= biggest; + (*v)[j].y /= biggest; + } + printf("%lf[^, \t\n\f\r\v]%lf\n", (*v)[j].x, (*v)[j].y); + } + + } + if(i != *size) { fprintf(stderr, "Number of sites specified in %s does not match with the actual number of points\n", file); }