source: trunk/src/CubicSplineInterpolator1D.h@ 2733

Last change on this file since 2733 was 2733, checked in by Takeshi Nakazato, 12 years ago

New Development: No

JIRA Issue: Yes CAS-4770

Ready for Test: Yes

Interface Changes: Yes/No

What Interface Changed: Please list interface changes

Test Programs: List test programs

Put in Release Notes: Yes/No

Module(s): Module Names change impacts.

Description: Describe your changes here...

Redefined Interpolator1D and derived classes as template class.


File size: 1.8 KB
Line 
1//
2// C++ Interface: CubicSplineInterpolator1D
3//
4// Description:
5//
6//
7// Author: Takeshi Nakazato <takeshi.nakazato@nao.ac.jp>, (C) 2012
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12#ifndef ASAP_CUBIC_SPLINE_INTERPOLATOR_1D_H
13#define ASAP_CUBIC_SPLINE_INTERPOLATOR_1D_H
14
15#include "Interpolator1D.h"
16
17namespace asap {
18
19/**
20 * Implementation of (natural) cubic spline interpolation.
21 * @author TakeshiNakazato
22 */
23template <class T, class U>
24class CubicSplineInterpolator1D : public Interpolator1D<T, U> {
25public:
26 // Default constructor.
27 CubicSplineInterpolator1D();
28
29 // Destructor.
30 virtual ~CubicSplineInterpolator1D();
31
32 // Override Interpolator1D::setData.
33 // @see Interpolator1D::setData
34 void setData(T *x, U *y, unsigned int n);
35
36 // Override Interpolator1D::setY.
37 // @see Interpolator1D::setY()
38 void setY(U *y, unsigned int n);
39
40 // Perform interpolation.
41 // @param[in] x horizontal location where the value is evaluated
42 // by interpolation.
43 // @return interpolated value at x.
44 U interpolate(T x);
45private:
46 // Determine second derivatives of each point based on
47 // natural cubic spline condition (second derivative at each
48 // end is zero).
49 void evaly2();
50
51 // Do interpolation using second derivatives determined by evaly2().
52 // @param[in] x horizontal location where the value is evaluated
53 // by interpolation.
54 // @param[in] i location index for x.
55 // @return interpolated value at x.
56 U dospline(T x, unsigned int i);
57
58 // Array to store second derivatives on the data points.
59 U *y2_;
60
61 // number of data points for second derivatives
62 unsigned int ny2_;
63
64 // Boolean parameter whether buffered values are effective or not.
65 bool reusable_;
66};
67
68}
69
70#include "CubicSplineInterpolator1D.tcc"
71
72#endif
Note: See TracBrowser for help on using the repository browser.