00001 #ifndef BOUNDARYTREE_1_H
00002 #define BOUNDARYTREE_1_H
00003 #include "afltypes.h"
00004 #include "boundary.h"
00005 #include "boundary_1.h"
00006
00007 #include <iostream>
00008 #include <list>
00009
00010 namespace afl
00011 {
00015 class BoundaryTree_1 : public Boundary
00016 {
00020 public:
00033 BoundaryTree_1( const Field* field );
00034
00045 virtual troolean locate( const Point& p ) const;
00046
00058 virtual data_t intersect( const Point& p, const Point& v ) const;
00059
00070 virtual void addSegment( const Point& from, const Point& to );
00071
00082 virtual void addSegment( const Field* field );
00083
00092 virtual void toXML( std::ostream& doc,
00093 const std::string& componentsDir,
00094 const std::string& baseURI ) const;
00095
00099 virtual Boundary* clone( );
00100
00107 virtual Point getBoundingBoxMin( ) const;
00108
00109
00116 virtual Point getBoundingBoxMax( ) const;
00117
00124 virtual bool hasNoSegments( ) const;
00125
00132 virtual Point findNearest( const Point& p ) const;
00133
00140 virtual Value getNormal( const Point& p ) const;
00141
00145 private:
00152 std::list<Boundary_1> _segments;
00153
00157 };
00158
00159 }
00160
00161 #endif //BOUNDARYTREE_1_H
00162