// plygn.h
//
// Jiangguo (James) Liu
// ColoState, Jan.-Jun. 2007


#ifndef Plygn_H
#define Plygn_H

#include "PtVec2d.h"


// Plygn: convex

class Plygn {
private:
   int numVrtz;
   PtVec2d *vrtx;
public:
   Plygn() {numVrtz=0; vrtx=0;}  // Default constructor
   Plygn(char *filename);  // Constructor based on a data file
   Plygn(const Plygn &plygn);  // Copy constructor
   Plygn &operator=(const Plygn&);  // Copy assignment
   ~Plygn() {delete[] vrtx; numVrtz=0;}
   PtVec2d center() const;
   double area() const;
   int isInPlygn(PtVec2d) const;
   PtVec2d bndryInterSxn(const PtVec2d &Pi, const PtVec2d &Po) const; 
friend void updateInnerDom(Plygn &innerDom, const Plygn &realDom, 
   double vmax, double told, double tnew);
};

#endif  // Plygn_H
