VERB_code_2.2  2
 All Classes Namespaces Files Functions Variables Typedefs Macros Pages
linear.h
Go to the documentation of this file.
1 /**
2  * Linear interpolation
3  * \file linear.h
4  */
5 
6 #ifndef MATHS_INTERPOLATION_LINEAR_H
7 #define MATHS_INTERPOLATION_LINEAR_H
8 
9 namespace Maths
10 {
11  namespace Interpolation
12  {
13  /** Linear interpolation.
14  */
15  class Linear {
16  public:
17  int size;
18 
19  Linear(int n, double *x, double *y) {
20  size = n;
21  m_x = new double[n];
22  m_y = new double[n];
23 
24  for (int i = 0; i < n; ++i) {
25  m_x[i] = x[i];
26  m_y[i] = y[i];
27  }
28 
29  }
30 
31  ~Linear() {
32 
33  delete [] m_x;
34  delete [] m_y;
35 
36  }
37 
38  double getValue(double x) {
39  int i = 0;
40  while (x > m_x[++i] && i < size-1);
41 
42  double a = (x - m_x[i - 1]) / (m_x[i] - m_x[i - 1]);
43  return m_y[i - 1] + a * (m_y[i] - m_y[i - 1]);
44  }
45 
46  private:
47 
48  double *m_x, *m_y;
49  };
50  };
51 };
52 
53 #endif