boundary_2.h

00001 #ifndef BOUNDARY_2_H
00002 #define BOUNDARY_2_H
00003 #include "afltypes.h"
00004 #include "boundary.h"
00005 
00006 #include <iostream>
00007 #include <list>
00008 
00009 namespace afl
00010 {
00017     class Boundary_2 
00018     {
00022         public:
00029             Boundary_2( const Point& from, const Point& to, bool colour );
00030 
00036             Boundary_2( const Field* field, bool colour );
00037 
00042             Boundary_2( const Boundary_2& toCopy );
00043 
00047             virtual ~Boundary_2(  );
00048 
00056             virtual troolean locate( const Point& p ) const;
00057             
00069             virtual data_t intersect( const Point& p, const Point& v ) const;
00070 
00081             virtual void addSegment( const Point& from, const Point& to );
00082 
00093             virtual void addSegment( const Field* field );
00094 
00103              virtual void toXML( std::ostream& doc, 
00104                      const std::string& componentsDir, 
00105                      const std::string& baseURI ) const;
00106 
00110              virtual Boundary_2* clone(  );
00111 
00118             virtual Point findNearest( const Point& p ) const;
00119 
00126             virtual Value getNormal( const Point& p ) const;
00127 
00134             virtual Point getBoundingBoxMin(  ) const;
00135 
00142             virtual Point getBoundingBoxMax(  ) const;
00143 
00144 
00145         protected:
00146             friend class SimpleBoundary_2;
00147             friend class FieldBoundary_2;
00148             friend class BoundaryTree_2;
00149 
00153             Boundary_2(  );
00154 
00163             virtual int whereIs( const Point& p ) const;
00164 
00173             virtual bool intersectSegment( const Point& from, const Point& to ) const;
00174 
00178              bool _colour;
00179 
00183              std::list<Boundary_2> _segments;
00184                 
00188             Boundary_2* _impl;
00189             
00190         }; //class Boundary_2
00191 
00192 } // namespace afl
00193 
00194 #endif //BOUNDARY_2_H
00195 

Generated on Fri Dec 22 07:17:50 2006 for afl by  doxygen 1.4.6