00001 00006 #ifndef MATHS_INTERPOLATION_LINEAR_H 00007 #define MATHS_INTERPOLATION_LINEAR_H 00008 00009 namespace Maths 00010 { 00011 namespace Interpolation 00012 { 00015 class Linear { 00016 public: 00017 int size; 00018 00019 Linear(int n, double *x, double *y) { 00020 size = n; 00021 m_x = new double[n]; 00022 m_y = new double[n]; 00023 00024 for (int i = 0; i < n; ++i) { 00025 m_x[i] = x[i]; 00026 m_y[i] = y[i]; 00027 } 00028 00029 } 00030 00031 ~Linear() { 00032 00033 delete [] m_x; 00034 delete [] m_y; 00035 00036 } 00037 00038 double getValue(double x) { 00039 int i = 0; 00040 while (x > m_x[++i] && i < size-1); 00041 00042 double a = (x - m_x[i - 1]) / (m_x[i] - m_x[i - 1]); 00043 return m_y[i - 1] + a * (m_y[i] - m_y[i - 1]); 00044 } 00045 00046 private: 00047 00048 double *m_x, *m_y; 00049 }; 00050 }; 00051 }; 00052 00053 #endif