fieldboundary_2.h

00001 #ifndef FIELDBOUNDARY_2_H
00002 #define FIELDBOUNDARY_2_H
00003 #include "afltypes.h"
00004 #include "boundary_2.h"
00005 #include "field.h"
00006 
00007 #include <iostream>
00008 #include <list>
00009 
00010 namespace afl
00011 {
00016     class FieldBoundary_2 : public Boundary_2
00017     {
00021         public:
00022 
00030             FieldBoundary_2( const Field* field,  bool colour );
00031 
00035             virtual ~FieldBoundary_2(  );
00036 
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 
00081             virtual void addSegment( const Field* field );
00082 
00089             virtual Point getBoundingBoxMin(  ) const;
00090 
00097             virtual Point getBoundingBoxMax(  ) const;
00098 
00107              virtual void toXML( std::ostream& doc, 
00108                      const std::string& componentsDir, 
00109                      const std::string& baseURI ) const;
00110 
00114              virtual Boundary_2* clone(  );
00115 
00122             virtual Point findNearest( const Point& p ) const;
00123 
00130             virtual Value getNormal( const Point& p ) const;
00131 
00132 
00136         protected:
00145             virtual troolean inLocal( const Point& p ) const;
00146 
00154             virtual int whereIs( const Point& p ) const;
00155             
00160             void computeBoundingBox( size_t stops = boundaryParts ) const;
00161 
00165         private:
00169             const Field* _field;
00170 
00174             mutable bool _boundingBoxAvailable;
00175 
00179             mutable Point _bbMin;
00180 
00184             mutable Point _bbMax;
00185 
00186         }; //class FieldBoundary_2
00187 
00188 } // namespace afl
00189 
00190 #endif //FIELDBOUNDARY_2_H
00191 

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