1 #ifndef SPLINE_BSPLINE_H 2 #define SPLINE_BSPLINE_H 4 #include <KrisLibrary/math/sparsevector.h> 5 #include <KrisLibrary/math/sparsematrix.h> 25 void SetUniformKnots(
size_t numCps,
size_t degree,Real h=One);
28 void SetClosedKnots(
size_t numCps,
size_t degree,Real h=One);
31 int Degree()
const {
return (
int)knots.size()-numControlPoints-1; }
35 std::pair<int,int>
Support(
int k)
const {
return std::pair<int,int>(k-Degree(),k); }
38 std::pair<int,int>
Domain(
int k)
const {
return std::pair<int,int>(k,k+Degree()); }
40 Real StartTime()
const {
return knots[Degree()]; }
41 Real EndTime()
const {
return knots[knots.size()-Degree()-1]; }
44 int GetKnot(Real t)
const;
76 void EvaluateWithDerivs(Real t,std::vector<SparseVector >& db)
const;
81 std::vector<Real> knots;
87 int Degree()
const {
return basis.Degree(); }
88 void SetConstant(
const Vector& value);
89 void Evaluate(Real t,Vector& value)
const;
90 void Deriv(Real t,Vector& value)
const;
91 void Deriv(Real t,
int k,Vector& value)
const;
95 std::vector<Vector> cps;
113 Real CoxDeBoor(
int i,
int p,Real t,
const std::vector<Real>& u);
122 void CoxDeBoor(
int i,
int p,Real t,
const std::vector<Real>& u,Real N[]);
126 void CoxDeBoorDeriv(
int i,
int p,Real t,
const std::vector<Real>& u,Real N[],Real dN[]);
129 void CoxDeBoorDeriv2(
int i,
int p,Real t,
const std::vector<Real>& u,Real N[],Real dN[],Real ddN[]);
134 void CoxDeBoorDerivN(
int i,
int p,Real t,
int n,
const std::vector<Real>& u,Real** N);
141 void CoxDeBoorBasis(
int base,
int i,
int p,
const std::vector<Real>& u,Real B[]);
148 void CoxDeBoorBasis2(
int base,
int p,
const std::vector<Real>& u,Real** B);
150 std::istream& operator >> (std::istream& in,
BSpline& spline);
151 std::ostream& operator << (std::ostream& in,
const BSpline& spline);
std::pair< int, int > Domain(int k) const
Definition: BSpline.h:38
std::pair< int, int > Support(int k) const
Definition: BSpline.h:35
Defines the B-spline basis for a given knot vector, number of control points.
Definition: BSpline.h:22
int Degree() const
Returns the degree p.
Definition: BSpline.h:31
Definition: SparseVectorTemplate.h:14
Definition: BSpline.cpp:9
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12