/*** MAIN.C ***/ #include #include /* realloc(), qsort() */ #include "vdefs.h" Site * readone(void), * nextone(void) ; void readsites(void) ; int sorted, triangulate, plot, debug, nsites, siteidx ; double xmin, xmax, ymin, ymax ; Site * sites ; Freelist sfl ; AV *lines_out, *edges_out, *vertices_out; int compute_voronoi(Site *sites_in, int nsites_in, double xmin_in, double xmax_in, double ymin_in, double ymax_in, int debug_in, AV *lines_out_in, AV *edges_out_in, AV *vertices_out_in) { int c ; Site *(*next)() ; freeinit(&sfl, sizeof(Site)) ; sorted = triangulate = plot = debug = 0 ; debug = debug_in; lines_out = lines_out_in; edges_out = edges_out_in; vertices_out = vertices_out_in; nsites = nsites_in; sites = sites_in; xmin = xmin_in; xmax = xmax_in; ymin = ymin_in; ymax = ymax_in; next = nextone; siteidx = 0 ; geominit() ; if (plot) { plotinit() ; } voronoi(next) ; free_all(); return (0) ; } /*** return a single in-storage site ***/ Site * nextone(void) { Site * s ; if (siteidx < nsites) { s = &sites[siteidx++]; return (s) ; } else { return ((Site *)NULL) ; } }