App
CubicSpline.hpp
Go to the documentation of this file.
1 
2 #ifndef CUBICSPLINE_HPP_
3 #define CUBICSPLINE_HPP_
4 
5 #include <cstdlib>
6 #include <cstring>
7 #include <cmath>
8 
9 namespace app {
10 
11 // Vyžaduje minimálně 2 body. Mimo body vrací konstantní hodnotu krajního...
12 // Je NULL proof, když se ale cokoliv pokazí při inicializaci, vrací vždy 0.
13 // Vytváří si vlastní kopii interpolovaných hodnot.
14 class CubicSpline {
15 protected:
16  unsigned valsCount;
17  unsigned lastVal;
18  int jsav;
19  int cor;
20  int dj;
21  int ascnd;
22  double *xVals, *yVals;
23  double * y2Vals;
24 
25  int initOK;
26 
27  int locate(const double x);
28  int hunt(const double x);
29  double interpolate(int jlo, double x) const;
30  int y2ValsInit(const double *xv, const double *yv, double y1_0, double y1_n);
31 
32 public:
33  CubicSpline(double const * x, double const * y, unsigned count, double y1_0 = 1.e99, double y1_n = 1.e99); // Pro vetsi nez defaultni hodnotu se pouziji prirozene hodnoty.
34 
35  int isOK() const { return initOK; };
36 
37  double getValueAt(double x);
38 
39  virtual ~CubicSpline();
40 };
41 
42 } /* namespace app */
43 #endif /* CUBICSPLINE_HPP_ */