/* MetaContour, version 0.1 -------------------------------------- */ /* Copyright(C) 2004, Brooks Moses */ /* */ /* This version of MetaContour is made available under the Gnu */ /* Public License; see metacontour_main.cc for details. */ /* */ /* This is a very pre-release version of MetaContour, distributed */ /* primarily as an example of a use of MetaPlot. It can be */ /* compiled with gcc using the line: */ /* */ /* g++ metacontour.cc cpoint.cc metacontour_main.cc */ /* */ /*-----------------------------------------------------------------*/ /* Class for 2D points with one data value each */ #include #include using namespace std; struct cpoint { double x; double y; double z; cpoint(); cpoint(double, double, double); cpoint interpolateto(cpoint, double); cpoint partwayto(cpoint, double); static double saddlepoint(cpoint, cpoint, cpoint, cpoint); string metapoint(); }; class cparray { valarray* a; int i; int j; public: cparray(int x, int y); // note: no default constructor cparray(const cparray&); cparray& operator=(const cparray&); ~cparray(); int size() const { return i*j; } int i_dim() const { return i; } int j_dim() const { return j; } cpoint& operator()(int x, int y); // Fortran-style subscripts cpoint operator()(int x, int y) const; valarray& array() { return *a; } };