00001 #ifndef SIMPLEBOUNDARY_4_H 00002 #define SIMPLEBOUNDARY_4_H 00003 #include "afltypes.h" 00004 #include "boundary_4.h" 00005 00006 #include <iostream> 00007 #include <list> 00008 00009 namespace afl 00010 { 00015 class SimpleBoundary_4 : public Boundary_4 00016 { 00020 public: 00021 00029 SimpleBoundary_4( const Point& from, const Point& to, bool colour ); 00030 00034 virtual ~SimpleBoundary_4( ); 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 getBoundingBoxMin( ) const; 00089 00096 virtual Point getBoundingBoxMax( ) const; 00097 00106 virtual void toXML( std::ostream& doc, 00107 const std::string& componentsDir, 00108 const std::string& baseURI ) const; 00109 00113 virtual Boundary_4* clone( ); 00114 00121 virtual Point findNearest( const Point& p ) const; 00122 00129 virtual Value getNormal( const Point& p ) const; 00130 00134 protected: 00143 virtual int whereIs( const Point& p ) const; 00144 00153 virtual bool intersectSegment( const Point& from, const Point& to ) const; 00154 00158 private: 00162 data_t _left; 00163 00167 data_t _top; 00168 00172 data_t _back; 00173 00177 data_t _before; 00178 00182 data_t _right; 00183 00187 data_t _bottom; 00188 00192 data_t _front; 00193 00197 data_t _after; 00198 00199 }; //class SimpleBoundary_4 00200 00201 } // namespace afl 00202 00203 #endif //SIMPLEBOUNDARY_4_H 00204