00001 #ifndef ANALYTICINTERPOLATOR_H 00002 #define ANALYTICINTERPOLATOR_H 00003 00004 #include "field.h" 00005 #include "afltypes.h" 00006 #include "point.h" 00007 #include "functions.h" 00008 #include "value.h" 00009 #include "interpolator.h" 00010 00011 namespace afl 00012 { 00013 00018 class AnalyticInterpolator : public Interpolator 00019 { 00020 00022 public: 00029 AnalyticInterpolator( const Field* f, const FnValue& fn, 00030 const Parameters& params ); 00031 00035 virtual ~AnalyticInterpolator( ); 00036 00043 virtual Value interpolate( const Point& x ) const; 00044 00049 virtual void toXML( std::ostream& doc ) const; 00050 00055 virtual Interpolator* clone( ); 00056 00060 virtual const ddf::Geometry* getValueGeometry( ) const; 00061 00065 virtual const std::string& getImplementation( ) const; 00066 00070 virtual const std::string& getMethod( ) const; 00071 00073 private: 00074 static const std::string _method; 00075 static const std::string _impl; 00076 00077 FnValue _fn; 00078 ddf::Geometry _geom; 00079 }; 00080 00081 }; 00082 00083 #endif // ANALYTICINTERPOLATOR_H