samp_curve.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:1k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = samp_curve.cpp
  3. //
  4. #include <stdlib.h>
  5. #include <math.h>
  6. #include "samp_curve.h"
  7. #include "misdefs.h"
  8. #ifdef _DEBUG
  9.   extern ofstream *DebugFile;
  10. #endif
  11. //======================================================
  12. SampledCurve::SampledCurve(char* data_fname )
  13. {
  14.    int i;
  15.    Data_File = new ifstream(data_fname, ios::in);
  16.    *Data_File >> Num_Samps;
  17.    Ordinate_Vals = new double[Num_Samps+1];
  18.    Ordinate_Vals[0] = 0.0;
  19.    for( i=1; i<=Num_Samps; i++){
  20.       *Data_File >> Ordinate_Vals[i];
  21.    }
  22. }
  23. //======================================================
  24. SampledCurve::~SampledCurve( void )
  25.    delete[] Ordinate_Vals;
  26. };
  27. //======================================================
  28. double SampledCurve::GetValue(double abscissa)
  29. {
  30.    double whole;
  31.    double frac;
  32.    int index;
  33.    double value;
  34.    frac = modf(abscissa, &whole);
  35.    index = int(whole);
  36.    if(index > Num_Samps-1){
  37.       value = Ordinate_Vals[Num_Samps-1];
  38.    }
  39.    else{
  40.       value = frac*Ordinate_Vals[index+1] + 
  41.                (1.0-frac)*Ordinate_Vals[index];
  42.    }
  43.    return(value);
  44. }