comp20003-project01/main.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;
}