00001 #ifndef BOUNDARYTREE_2_H 00002 #define BOUNDARYTREE_2_H 00003 #include "afltypes.h" 00004 #include "boundary.h" 00005 #include "boundary_2.h" 00006 00007 #include <iostream> 00008 #include <list> 00009 00010 namespace afl 00011 { 00016 class BoundaryTree_2 : public Boundary 00017 { 00021 public: 00025 BoundaryTree_2( const Field* field ); 00026 00030 virtual ~BoundaryTree_2( ); 00031 00039 virtual troolean locate( const Point& p ) const; 00040 00052 virtual data_t intersect( const Point& p, const Point& v ) const; 00053 00064 virtual void addSegment( const Point& from, const Point& to ); 00065 00076 virtual void addSegment( const Field* field ); 00077 00084 virtual Point getBoundingBoxMin( ) const; 00085 00092 virtual Point getBoundingBoxMax( ) const; 00093 00102 virtual void toXML( std::ostream& doc, 00103 const std::string& componentsDir, 00104 const std::string& baseURI ) const; 00105 00109 virtual Boundary* clone( ); 00110 00117 virtual bool hasNoSegments( ) const; 00118 00125 virtual Point findNearest( const Point& p ) const; 00126 00133 virtual Value getNormal( const Point& p ) const; 00134 00135 protected: 00139 std::list<Boundary_2> _segments; 00140 }; //class BoundaryTree_2 00141 00142 } // namespace afl 00143 00144 #endif //BOUNDARYTREE_2_H 00145