#ifndef _POLYGON_H_ #define _POLYGON_H_ #include "global.h" /* * * Polygon Class * * This class implements a simple primitive for polygons. It basically * just keeps track of the vertices in the polygon in a dynamic array. * */ class Segment; class Vertex; class List; class Polygon { public: Polygon(); ~Polygon(); void do_copy(Polygon *p_copy); void AddSegment(Segment *s); void AddSegment(Segment *s, Segment *where); void DeleteSegment(Segment *s); int NumSegments(); void ComputeCenter(); Segment *Next(Segment *s); Segment *SegmentNum(int segment_num); List *SegList() {return seg_list;} int segment_in_triangle(Vertex *v, Segment *s); int Contains(Vertex *v); int Contains(Vertex *v1, Vertex *v2); Vertex *GetCenter() {return center;} List *internal_segments; List *visible_segments; List *visible_polygons; void print(); private: void compute_centroid(Vertex *v1, Vertex *v2, Vertex *v3, Vertex *result); fixedpt compute_area(Vertex *v1, Vertex *v2, Vertex *v3); List *seg_list; int num_segments; Vertex *center; }; #endif /* _POLYGON_H_ */