contour.h
Go to the documentation of this file.00001 #ifndef __UTIL__CONTOUR_HPP__
00002 #define __UTIL__CONTOUR_HPP__
00003
00009 #include <config.h>
00010 #include <string>
00011 #include <vector>
00012 #include <util/vector.h>
00013 #include <util/watchdog.h>
00014
00015 namespace util {
00025 class Contour : public FileObject {
00026 public:
00027 Contour();
00028 Contour(const Contour&);
00029 #ifdef USE_CXX0X
00030 Contour(Contour&&) = default;
00031 #endif
00032
00033 Contour(std::string filename);
00034 Contour& operator=(const Contour&);
00035 #ifdef USE_CXX0X
00036 Contour& operator=(Contour&&) = default;
00037 #endif
00038 util::Vector<3,double> operator()(double t) const;
00039 const util::Vector<3,double>& getMax() const;
00040 const util::Vector<3,double>& getMin() const;
00041
00042 double length(double a, double b, double dt = 0.01);
00043 double travel(double t, double l, double dt = 0.01);
00044
00045 util::Vector<3,double> tangent(double t, double dt = 0.01);
00046 util::Vector<3,double> normal(double t, double dt = 0.01);
00047
00048 void reread();
00049
00050 private:
00051 double Basis0(double t) const;
00052 double Basis1(double t) const;
00053 double Basis2(double t) const;
00054 double Basis3(double t) const;
00055
00056 std::vector<util::Vector<3,double> > pts;
00057 util::Vector<3,double> max;
00058 util::Vector<3,double> min;
00059
00060 bool closed;
00061 bool regular;
00062 };
00063 }
00064
00065 #endif