EOL BSpline Library  v2.2
All Classes Files Functions Variables Enumerations Enumerator Pages
Public Member Functions | Protected Attributes | List of all members
BSpline< T > Class Template Reference

#include <BSpline.h>

Inheritance diagram for BSpline< T >:
BSplineBase< T >

Public Member Functions

 BSpline (const T *x, int nx, const T *y, double wl, int bc_type=BSplineBase< T >::BC_ZERO_SECOND, int num_nodes=0)
 
 BSpline (BSplineBase< T > &base, const T *y)
 
bool solve (const T *y)
 
evaluate (T x)
 
slope (T x)
 
coefficient (int n)
 
- Public Member Functions inherited from BSplineBase< T >
 BSplineBase (const T *x, int nx, double wl, int bc_type=BC_ZERO_SECOND, int num_nodes=0)
 
 BSplineBase (const BSplineBase &bb)
 Copy constructor.
 
BSplineBaseoperator= (const BSplineBase &right)
 Assignment operator.
 
bool setDomain (const T *x, int nx, double wl, int bc_type=BC_ZERO_SECOND, int num_nodes=0)
 
BSpline< T > * apply (const T *y)
 
const T * nodes (int *nnodes)
 
int nNodes ()
 
int nX ()
 
Xmin ()
 Minimum x value found.
 
Xmax ()
 Maximum x value found.
 
double Alpha (double wavelength)
 
double Alpha ()
 
bool ok ()
 

Protected Attributes

BSplineP< T > * s
 
mean
 
- Protected Attributes inherited from BSplineBase< T >
double waveLength
 
int NX
 
int K
 
int BC
 
xmax
 
xmin
 
int M
 
double DX
 
double alpha
 
bool OK
 
std::unique_ptr< Basebase
 

Additional Inherited Members

- Public Types inherited from BSplineBase< T >
enum  BoundaryConditionTypes { BC_ZERO_ENDPOINTS = 0 , BC_ZERO_FIRST = 1 , BC_ZERO_SECOND = 2 }
 
typedef T datum_type
 
- Static Public Member Functions inherited from BSplineBase< T >
static const char * Version ()
 Return a string describing the bspline library version.
 
static bool Debug (int on=-1)
 
- Protected Types inherited from BSplineBase< T >
typedef BSplineBaseP< T > Base
 
- Protected Member Functions inherited from BSplineBase< T >
bool Setup (int num_nodes=0)
 Setup number of nodes and deltax for the given domain and cutoff wavelength. More...
 
void calculateQ ()
 
double qDelta (int m1, int m2)
 
double Beta (int m)
 
void addP ()
 
bool factor ()
 
double Basis (int m, T x)
 
double DBasis (int m, T x)
 
double Ratiod (int &, double &, double &)
 
- Static Protected Attributes inherited from BSplineBase< T >
static const double BoundaryConditions [3][4]
 
static const double PI = 3.1415927
 

Detailed Description

template<class T>
class BSpline< T >

Used to evaluate a BSpline. Inherits the BSplineBase domain information and interface and adds smoothing. See the BSplineBase documentation for a summary of the BSpline interface.

Constructor & Destructor Documentation

◆ BSpline() [1/2]

template<class T >
BSpline< T >::BSpline ( const T *  x,
int  nx,
const T *  y,
double  wl,
int  bc_type = BSplineBase<T>::BC_ZERO_SECOND,
int  num_nodes = 0 
)

Create a single spline with the parameters required to set up the domain and subsequently smooth the given set of y values. The y values must correspond to each of the values in the x array. If either the domain setup fails or the spline cannot be solved, the state will be set to not ok.

See also
ok().
Parameters
xThe array of x values in the domain.
nxThe number of values in the x array.
yThe array of y values corresponding to each of the nX() x values in the domain.
wlThe cutoff wavelength, in the same units as the x values. A wavelength of zero disables the derivative constraint.
bc_typeThe enumerated boundary condition type. If omitted it defaults to BC_ZERO_SECOND.
num_nodesThe number of nodes to use for the cubic b-spline. If less than 2 a "reasonable" number will be calculated automatically, taking into account the given cutoff wavelength.

◆ BSpline() [2/2]

template<class T >
BSpline< T >::BSpline ( BSplineBase< T > &  base,
const T *  y 
)

A BSpline curve can be derived from a separate base and a set of data points y over that base.

Member Function Documentation

◆ coefficient()

template<class T >
T BSpline< T >::coefficient ( int  n)

Return the n-th basis coefficient, from 0 to M. If the current state is not ok(), or n is out of range, the method returns zero.

◆ evaluate()

template<class T >
T BSpline< T >::evaluate ( x)

Return the evaluation of the smoothed curve at a particular x value. If current state is not ok(), returns 0.

◆ slope()

template<class T >
T BSpline< T >::slope ( x)

Return the first derivative of the spline curve at the given x. Returns zero if the current state is not ok().

◆ solve()

template<class T >
bool BSpline< T >::solve ( const T *  y)

Solve the spline curve for a new set of y values. Returns false if the solution fails.

Parameters
yThe array of y values corresponding to each of the nX() x values in the domain.

The documentation for this class was generated from the following files: