29 #ifndef BSPLINE_DATA_INCLUDED
30 #define BSPLINE_DATA_INCLUDED
33 #include "ppolynomial.h"
44 template<
int Degree ,
class Real >
81 virtual void setValueTables(
int flags,
double valueSmooth,
double normalSmooth);
84 void setSampleSpan(
int idx ,
int& start ,
int& end ,
double smooth=0 )
const;
95 void set(
int maxDepth ,
bool useDotRatios=
true ,
bool reflectBoundary=
false );
97 inline int Index(
int i1 ,
int i2 )
const;
102 template<
int Degree >
110 template<
int Degree >
113 static const int _off = (Degree+1)/2;
114 void _addLeft (
int offset ,
int boundary );
115 void _addRight(
int offset ,
int boundary );
134 for(
int i=0 ; i<this->size() ; i++ )
137 for(
int j=0 ; j<=Degree ; j++ ) printf(
" %d" , (*
this)[i][j] );
149 #include "bspline_data.hpp"
PPolynomial< Degree > baseFunction
static const int DD_DOT_FLAG
PPolynomial< Degree-1 > dRightBaseFunction
static const int VV_DOT_FLAG
BSplineComponents * baseBSplines
void set(int maxDepth, bool useDotRatios=true, bool reflectBoundary=false)
static int SymmetricIndex(int i1, int i2)
static const int D_VALUE_FLAG
virtual void setValueTables(int flags, double smooth=0)
PPolynomial< Degree-1 > dBaseFunction
virtual void clearDotTables(int flags)
PPolynomial< Degree > rightBaseFunction
virtual void clearValueTables()
static const int DV_DOT_FLAG
virtual void setDotTables(int flags)
PPolynomial< Degree-1 > dLeftBaseFunction
PPolynomial< Degree > leftBaseFunction
PPolynomial< Degree > * baseFunctions
void setSampleSpan(int idx, int &start, int &end, double smooth=0) const
int Index(int i1, int i2) const
BSplineComponents rightBSpline
BSplineComponents baseBSpline
static const int VALUE_FLAG
BSplineComponents leftBSpline
void SetBSplineElementIntegrals(double integrals[Degree1+1][Degree2+1])
Polynomial< Degree > polys[Degree+1]
Polynomial< Degree > & operator[](int idx)
BSplineComponents shift(double s) const
BSplineComponents scale(double s) const
int & operator[](int idx)
BSplineElementCoefficients()=default
const int & operator[](int idx) const
void differentiate(BSplineElements< Degree-1 > &d) const
void _addRight(int offset, int boundary)
void _addLeft(int offset, int boundary)
void upSample(BSplineElements &high) const