00001 #ifndef SIMPLEBOUNDARY_2_H 00002 #define SIMPLEBOUNDARY_2_H 00003 #include "afltypes.h" 00004 #include "boundary_2.h" 00005 00006 #include <iostream> 00007 #include <list> 00008 00009 namespace afl 00010 { 00015 class SimpleBoundary_2 : public Boundary_2 00016 { 00020 public: 00021 00029 SimpleBoundary_2( const Point& from, const Point& to, bool colour ); 00030 00034 virtual ~SimpleBoundary_2( ); 00035 00043 virtual troolean locate( const Point& p ) const; 00044 00056 virtual data_t intersect( const Point& p, const Point& v ) const; 00057 00068 virtual void addSegment( const Point& from, const Point& to ); 00069 00080 virtual void addSegment( const Field* field ); 00081 00088 virtual Point getStart( ) const; 00089 00096 virtual Point getEnd( ) const; 00097 00106 virtual void toXML( std::ostream& doc, 00107 const std::string& componentsDir, 00108 const std::string& baseURI ) const; 00109 00116 virtual Point getBoundingBoxMin( ) const; 00117 00124 virtual Point getBoundingBoxMax( ) const; 00125 00129 virtual Boundary_2* clone( ); 00130 00137 virtual Point findNearest( const Point& p ) const; 00138 00145 virtual Value getNormal( const Point& p ) const; 00146 00150 protected: 00159 virtual int whereIs( const Point& p ) const; 00160 00169 virtual bool intersectSegment( const Point& from, const Point& to ) const; 00170 00174 private: 00178 data_t _left; 00179 00183 data_t _top; 00184 00188 data_t _right; 00189 00193 data_t _bottom; 00194 00195 }; //class SimpleBoundary_2 00196 00197 } // namespace afl 00198 00199 #endif //SIMPLEBOUNDARY_2_H 00200