00001 00012 #ifndef __POLYGON_H__ 00013 #define __POLYGON_H__ 00014 00015 #include <surface.h> 00016 #include <geom_point.h> 00017 #include <line.h> 00018 00022 class Polygon : public Surface { 00023 public: 00030 Polygon(GeomPoint pA, GeomPoint pB, GeomPoint pC); 00031 00040 Polygon(GeomPoint pA, GeomPoint pB, GeomPoint pC, GeomPoint pD); 00041 00046 int getCount(); 00047 00052 Polygon getDup(); 00053 00058 virtual Hight getHight(); 00059 00066 GeomPoint getFootpoint(GeomPoint p); 00067 00076 GeomVec getNormVec(); 00077 00084 GeomPoint& getPoint(int idx); 00085 00091 virtual bool isIn(GeomPoint p); 00092 00099 bool isInPlane(GeomPoint p); 00100 00104 void print(); 00105 00110 void setHight(Hight h); 00111 00112 virtual bool testLine(GeomPoint p, GeomPoint &q, 00113 bool &intersect, bool &inside); 00114 00121 GeomVec operator[](int idx); 00122 00123 private: 00129 bool isAtBorder(GeomPoint p); 00130 00135 bool isCorner(GeomPoint p); 00136 00146 bool isIn(GeomPoint q, Axis proj); 00147 00151 int cornerCount; 00152 00156 GeomPoint pointA; 00157 00161 GeomPoint pointB; 00162 00166 GeomPoint pointC; 00167 00171 GeomPoint pointD; 00172 00173 }; // class Polygon 00174 00175 #endif // ! __POLYGON_H__