00001 #ifndef SIMPLEBOUNDARY_3_H 00002 #define SIMPLEBOUNDARY_3_H 00003 #include "afltypes.h" 00004 #include "boundary_3.h" 00005 00006 #include <iostream> 00007 #include <list> 00008 00009 namespace afl 00010 { 00015 class SimpleBoundary_3 : public Boundary_3 00016 { 00020 public: 00021 00029 SimpleBoundary_3( const Point& from, const Point& to, bool colour ); 00030 00034 virtual ~SimpleBoundary_3( ); 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_3* 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 _right; 00178 00182 data_t _bottom; 00183 00187 data_t _front; 00188 00189 }; //class SimpleBoundary_3 00190 00191 } // namespace afl 00192 00193 #endif //SIMPLEBOUNDARY_3_H 00194