29 #ifndef BSPLINE_DATA_INCLUDED
30 #define BSPLINE_DATA_INCLUDED
33 #include "ppolynomial.h"
41 template<
int Degree ,
class Real >
52 void printnl(
void )
const {
for(
int d=0 ; d<=Degree ; d++ ) polys[d].
printnl(); }
78 virtual void setValueTables(
int flags,
double valueSmooth,
double normalSmooth);
81 void setSampleSpan(
int idx ,
int& start ,
int& end ,
double smooth=0 )
const;
92 void set(
int maxDepth ,
bool useDotRatios=
true ,
bool reflectBoundary=
false );
94 inline int Index(
int i1 ,
int i2 )
const;
99 template<
int Degree >
105 const int&
operator[](
int idx )
const {
return coeffs[idx]; }
107 template<
int Degree >
110 static const int _off = (Degree+1)/2;
111 void _addLeft (
int offset ,
int boundary );
112 void _addRight(
int offset ,
int boundary );
131 for(
int i=0 ; i<this->size() ; i++ )
134 for(
int j=0 ; j<=Degree ; j++ ) printf(
" %d" , (*
this)[i][j] );
135 printf(
" (%d)\n" , denominator );
146 #include "bspline_data.hpp"
148 #endif // BSPLINE_DATA_INCLUDED
void print(FILE *fp=stdout) const
virtual void clearDotTables(int flags)
PPolynomial< Degree-1 > dBaseFunction
PPolynomial< Degree-1 > dRightBaseFunction
BSplineComponents leftBSpline
PPolynomial< Degree-1 > dLeftBaseFunction
PPolynomial< Degree > rightBaseFunction
static const int D_VALUE_FLAG
This file defines compatibility wrappers for low level I/O functions.
static int SymmetricIndex(int i1, int i2)
int & operator[](int idx)
const int & operator[](int idx) const
PPolynomial< Degree > baseFunction
int Index(int i1, int i2) const
BSplineComponents scale(double s) const
void _addLeft(int offset, int boundary)
static const int DV_DOT_FLAG
PPolynomial< Degree > * baseFunctions
virtual void setValueTables(int flags, double smooth=0)
static const int VV_DOT_FLAG
void differentiate(BSplineElements< Degree-1 > &d) const
void _addRight(int offset, int boundary)
virtual void clearValueTables(void)
BSplineComponents baseBSpline
Polynomial< Degree > & operator[](int idx)
virtual void setDotTables(int flags)
static const int DD_DOT_FLAG
Polynomial< Degree > polys[Degree+1]
void set(int maxDepth, bool useDotRatios=true, bool reflectBoundary=false)
BSplineComponents shift(double s) const
void SetBSplineElementIntegrals(double integrals[Degree1+1][Degree2+1])
BSplineComponents * baseBSplines
void setSampleSpan(int idx, int &start, int &end, double smooth=0) const
void upSample(BSplineElements &high) const
BSplineElementCoefficients(void)
BSplineComponents rightBSpline
PPolynomial< Degree > leftBaseFunction
static const int VALUE_FLAG