spline_linear.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef LASS_GUARDIAN_OF_INCLUSION_NUM_SPLINE_LINEAR_H
00051 #define LASS_GUARDIAN_OF_INCLUSION_NUM_SPLINE_LINEAR_H
00052
00053 #include "num_common.h"
00054 #include "spline.h"
00055
00056 namespace lass
00057 {
00058 namespace num
00059 {
00060
00061 template
00062 <
00063 typename ScalarType,
00064 typename DataType,
00065 typename DataTraits
00066 >
00067 class SplineLinear: public Spline<ScalarType, DataType>
00068 {
00069 public:
00070
00071 typedef DataTraits TDataTraits;
00072 typedef Spline<ScalarType, DataType> TSplineBase;
00073 typedef typename TSplineBase::TScalar TScalar;
00074 typedef typename TSplineBase::TData TData;
00075 typedef typename TSplineBase::ControlRange TControlRange;
00076
00077 SplineLinear();
00078 template <typename PairInputIterator>
00079 SplineLinear(PairInputIterator iFirst, PairInputIterator iLast);
00080 template <typename ScalarInputIterator, typename DataInputIterator>
00081 SplineLinear(ScalarInputIterator iFirstControl, ScalarInputIterator iLastControl,
00082 DataInputIterator iFirstData);
00083
00084 const TData operator()(TScalar iX) const;
00085 const TData derivative(TScalar iX) const;
00086 const TData derivative2(TScalar iX) const;
00087 const TData integral(TScalar iA, TScalar iB) const;
00088
00089 const bool isEmpty() const;
00090 const TControlRange controlRange() const;
00091
00092 private:
00093
00094 struct Node
00095 {
00096 TData y;
00097 TData dy;
00098 TScalar x;
00099
00100 static bool less(const Node& iA, const Node& iB) { return iA.x < iB.x; }
00101 };
00102
00103 typedef std::vector<Node> TNodes;
00104 typedef typename TNodes::const_iterator TNodeConstIterator;
00105
00106 void init();
00107 const TNodeConstIterator findNode(TScalar iX) const;
00108
00109
00110 TNodes nodes_;
00111 size_t dataDimension_;
00112 };
00113
00114
00115
00116 }
00117
00118 }
00119
00120 #include "spline_linear.inl"
00121
00122 #endif
00123
00124