00001 #ifndef _MY_GeneralFunctionInterface_
00002 #define _MY_GeneralFunctionInterface_
00003 #include "globals.h"
00004 #include "vecdouble.h"
00005
00010 class GeneralFunctionInterface
00011 {
00012 unsigned _domainDim;
00013 unsigned _imageDim;
00014 public:
00015 GeneralFunctionInterface(unsigned domainDim,unsigned imageDim)
00016 :_domainDim(domainDim),_imageDim(imageDim){}
00017 unsigned getDomainDim() const {return _domainDim;}
00018 unsigned getImageDim() const {return _imageDim;}
00019 unsigned n_components() const {return _imageDim;}
00020 virtual double operator() (const VecDouble &p, unsigned int component=0) const=0;
00021 virtual bool isInDomain(const VecDouble &p,unsigned component=0) const;
00022
00023
00024
00025 virtual void setParameters(const VecDouble ¶meters)
00026 {
00027
00028 printf("GeneralFunctionInterface::setParameters(const VecDouble ¶meters [size=%d] ) not overloaded\n",parameters.size());
00029 assert(0);
00030
00031 }
00032
00033 void plotInLine(VecDouble &p1,VecDouble &p2,unsigned npts,std::ostream &out,unsigned cmp =0);
00034
00035
00036 virtual ~GeneralFunctionInterface(){}
00037
00038 virtual void vector_value(const VecDouble &p, VecDouble& values) const
00039 {
00040 printf("Warning: Invalid Base Method called for point %g-%d\n",p(0),values.size());
00041 std::cout << "Warning: Invali Base Method called" << std::endl;
00042 assert(0);
00043 }
00044
00045
00046 };
00047
00048
00049 #endif