/* main.c * * Created by Rory Healy (healyr@student.unimelb.edu.au) * Created on 25th August 2021 * Last modified 25th August 2021 * * Lists the watchtowers that are in each face of the polygon. * The polygon can be split using a pair of integers, which represent * the edge numbers that should be connected. This comes from stdin. * * To run the program type: * ./voronoi1 dataset_file polygon_file output_file < splits * * Options: * dataset_file required Path to the dataset file (CSV) * polygon_file required Path to the polygon file (txt) * output_file required Output solution file * splits optional Pairs of integers to split the edges * */ #ifndef DCEL_HEADER #include "dcel.h" #endif #ifndef COMMON_HEADER #include "common.h" #endif #ifndef VORONOI_HEADER #include "voronoi.h" #endif int main(int argc, char **argv) { /* Input and output files */ FILE *datasetFile = NULL, *polygonFile = NULL, *outputFile = NULL; checkInputArgs(argc, argv, &datasetFile, &polygonFile, &outputFile); /* Stores information about the towers given in dataset file */ tower_t **towers = malloc(sizeof(*towers)); checkNullPointer(towers); int numTowers = 0; towers = readTowers(towers, datasetFile, &numTowers); /* Stores information about the vertices in the polygon file */ vertex_t **vertices = malloc(sizeof(*vertices)); checkNullPointer(vertices); int numVertices = 0; vertices = readPolygon(vertices, polygonFile, &numVertices); /* Create DCEL structure from vertices */ /* Check for splits, split the polygon if needed */ /* Counts towers in each polygon, outputs to outputFile */ /* Cleaning up data */ freeTowers(towers, numTowers); freeVertices(vertices, numVertices); fclose(datasetFile); fclose(polygonFile); fclose(outputFile); return 0; }