Computational Geometry Algorithms Library  1.0
Computational Geometry Algorithms Library Documentation
Functions
main.cpp File Reference
#include "origin.h"
#include "GrahamScans.h"
#include "Andrews.h"
#include "JarvisMarch.h"
Include dependency graph for main.cpp:

Functions

int main (int argc, char *argv[])
 

Function Documentation

int main ( int  argc,
char *  argv[] 
)
6  {
7  vector<pair<double , double> > points;
8  if ( argc < 2 ) // argc should be 2 for correct execution
9  // We print argv[0] assuming it is the program name
10  cout << "usage: " << argv[0] << " <algorithm> <filename>\n";
11  else {
12  if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
13  cout << "\nusage: " << argv[0] << " <algorithm> <filename>\n";
14  printf("\t-g\t--grahamscan\tEvaluate by Graham Scan\n");
15  printf("\t-a\t--andrew\tEvaluate by Andrew's algorithm\n");
16  printf("\t-j\t--jarvismarch\tEvaluate by Jarvis March\n\n");
17  }
18  else {
19  if (argv[2])
20  points = getData(argv[2]);
21  else
22  points = getData("./tests/sampleInput.txt");
23  if (argv[1][1] == 'g' || strcmp(argv[1], "--grahamscan") == 0) {
24  double ret = execGrahamScans(points);
25  //cout << "Time taken : " << ret << endl;
26  }
27  else if (argv[1][1] == 'a' || strcmp(argv[1], "--andrew") == 0) {
28  //clock_t t_taken;
29  //t_taken = clock();
30  set<pair<double, double> > andrews_res = execAndrews(points);
31  ull andrews_len = andrews_res.size();
32  cout << andrews_len << endl;
33  set<pair<double, double> >::iterator iter;
34  for (iter = andrews_res.begin(); iter != andrews_res.end(); ++iter) {
35  cout << (*iter).first << " " << (*iter).second << endl;
36  }
37  //t_taken = clock() - t_taken;
38  //cout << "Time taken : " << ((double) (t_taken))/CLOCKS_PER_SEC << endl;
39  }
40  else if (argv[1][1] == 'j' || strcmp(argv[1], "--jarvismarch") == 0) {
41  execJarvisMarch(points);
42  cout<<"-----End of JarvisMarch-----"<<endl;
43  //cout << "Time taken : " << time_jarvis << endl;
44  }
45  else {
46  printf("Illegal flag");
47  }
48  }
49  }
50  return 0;
51 }
set< pair< double, double > > execAndrews(vector< pair< double, double > > Points)
Complete Execution of Andrews Monotone Chain
Definition: Andrews.h:60
#define ull
Definition: origin.h:11
vector< pair< double, double > > getData(char *filename)
Extract Data from Input File.
Definition: origin.h:113
double execGrahamScans(vector< pair< double, double > > Points)
Graham Scans Algorithm Implementation
Definition: GrahamScans.h:26
double execJarvisMarch(vector< pair< double, double > > Points)
Jarvis March Algorithm Implementation
Definition: JarvisMarch.h:39