64 lines
1.9 KiB
C
64 lines
1.9 KiB
C
/* 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;
|
|
}
|