Visual Servoing Platform
version 3.5.1 under development (20230127)

#include <visp3/core/vpBSpline.h>
Public Member Functions  
vpBSpline ()  
vpBSpline (const vpBSpline &bspline)  
virtual  ~vpBSpline () 
unsigned int  get_p () const 
void  get_controlPoints (std::list< vpImagePoint > &list) const 
void  get_knots (std::list< double > &list) const 
void  get_crossingPoints (std::list< vpImagePoint > &list) const 
void  set_p (unsigned int degree) 
void  set_controlPoints (const std::list< vpImagePoint > &list) 
void  set_knots (const std::list< double > &list) 
void  set_crossingPoints (const std::list< vpImagePoint > &list) 
unsigned int  findSpan (double u) 
vpBasisFunction *  computeBasisFuns (double u) 
vpBasisFunction **  computeDersBasisFuns (double u, unsigned int der) 
vpImagePoint  computeCurvePoint (double u) 
vpImagePoint *  computeCurveDers (double u, unsigned int der) 
Static Public Member Functions  
static unsigned int  findSpan (double l_u, unsigned int l_p, std::vector< double > &l_knots) 
static vpBasisFunction *  computeBasisFuns (double l_u, unsigned int l_i, unsigned int l_p, std::vector< double > &l_knots) 
static vpBasisFunction **  computeDersBasisFuns (double l_u, unsigned int l_i, unsigned int l_p, unsigned int l_der, std::vector< double > &l_knots) 
static vpImagePoint  computeCurvePoint (double l_u, unsigned int l_i, unsigned int l_p, std::vector< double > &l_knots, std::vector< vpImagePoint > &l_controlPoints) 
static vpImagePoint *  computeCurveDers (double l_u, unsigned int l_i, unsigned int l_p, unsigned int l_der, std::vector< double > &l_knots, std::vector< vpImagePoint > &l_controlPoints) 
Class that provides tools to compute and manipulate a BSpline curve.
The different parameters are :
The BSpline basis functions defined as :
where and p is the degree of the BSpline basis functions.
It is possible to compute the coordinates of a point corresponding to the knots ( ) thanks to the formula :
You can find much more information about the BSplines and the implementation of all the methods in the Nurbs Book.
Definition at line 110 of file vpBSpline.h.
vpBSpline::vpBSpline  (  ) 
Basic constructor.
The degree of the BSpline basis functions is set to 3 to compute cubic BSpline.
Definition at line 48 of file vpBSpline.cpp.
vpBSpline::vpBSpline  (  const vpBSpline &  bspline  ) 
Copy constructor.
Definition at line 58 of file vpBSpline.cpp.

virtual 
Basic destructor.
Definition at line 66 of file vpBSpline.cpp.

static 
Compute the nonvanishing basis functions at which is in the th knot interval. All the basis functions are stored in an array such as :
N = , , , ... , , ..., , ... , , ... ,
l_u  : A real number which is between the extrimities of the knot vector 
l_i  : the number of the knot interval in which lies 
l_p  : Degree of the BSpline basis functions. 
l_knots  : The knot vector 
Definition at line 147 of file vpBSpline.cpp.
Referenced by computeBasisFuns(), computeCurvePoint(), vpNurbs::computeCurvePoint(), vpNurbs::globalCurveApprox(), and vpNurbs::globalCurveInterp().
vpBasisFunction * vpBSpline::computeBasisFuns  (  double  u  ) 
Compute the nonvanishing basis functions at . All the basis functions are stored in an array such as :
N = , , , ... , , ..., , ... , , ... ,
where i the number of the knot interval in which lies.
u  : A real number which is between the extrimities of the knot vector 
Definition at line 198 of file vpBSpline.cpp.
References computeBasisFuns(), and findSpan().

static 
Compute the kth derivatives of for .
The formula used is the following :
where is the knot interval number in which lies and is the degree of the BSpline basis function.
l_u  : A real number which is between the extrimities of the knot vector 
l_i  : the number of the knot interval in which lies 
l_p  : Degree of the BSpline basis functions. 
l_der  : The last derivative to be computed. 
l_knots  : The knot vector 
l_controlPoints  : the list of control points. 
Definition at line 450 of file vpBSpline.cpp.
References computeDersBasisFuns(), vpImagePoint::set_i(), vpImagePoint::set_ij(), vpImagePoint::set_j(), and vpTRACE.
vpImagePoint * vpBSpline::computeCurveDers  (  double  u, 
unsigned int  der  
) 
Compute the kth derivatives of for .
The formula used is the following :
where is the knot interval number in which lies and is the degree of the BSpline basis function.
u  : A real number which is between the extrimities of the knot vector 
der  : The last derivative to be computed. 
Definition at line 496 of file vpBSpline.cpp.
References computeDersBasisFuns(), vpImagePoint::set_i(), vpImagePoint::set_ij(), vpImagePoint::set_j(), and vpTRACE.

static 
Compute the coordinates of a point corresponding to the knot .
l_u  : A real number which is between the extrimities of the knot vector 
l_i  : the number of the knot interval in which lies 
l_p  : Degree of the BSpline basis functions. 
l_knots  : The knot vector 
l_controlPoints  : the list of control points. 
return the coordinates of a point corresponding to the knot .
Definition at line 380 of file vpBSpline.cpp.
References computeBasisFuns(), vpImagePoint::set_i(), and vpImagePoint::set_j().
vpImagePoint vpBSpline::computeCurvePoint  (  double  u  ) 
Compute the coordinates of a point corresponding to the knot .
u  : A real number which is between the extrimities of the knot vector 
return the coordinates of a point corresponding to the knot .
Definition at line 409 of file vpBSpline.cpp.
References computeBasisFuns(), vpImagePoint::set_i(), and vpImagePoint::set_j().

static 
Compute the nonzero basis functions and their derivatives until the th derivative. All the functions are computed at l_u.
The result is given as an array of size l_der+1 x l_p+1. The kth line corresponds to the kth basis functions derivatives.
The formula to compute the kth derivative at is :
where is the knot interval number in which lies and is the degree of the BSpline basis function.
l_u  : A real number which is between the extrimities of the knot vector 
l_i  : the number of the knot interval in which lies 
l_p  : Degree of the BSpline basis functions. 
l_der  : The last derivative to be computed. 
l_knots  : The knot vector 
Example : return[0] is the list of the 0th derivatives ie the basis functions. return[k] is the list of the kth derivatives.
Definition at line 233 of file vpBSpline.cpp.
References vpTRACE.
Referenced by computeCurveDers(), vpNurbs::computeCurveDers(), and computeDersBasisFuns().
vpBasisFunction ** vpBSpline::computeDersBasisFuns  (  double  u, 
unsigned int  der  
) 
Compute the nonzero basis functions and their derivatives until the th derivative. All the functions are computed at u.
The result is given as an array of size der+1 x p+1. The kth line corresponds to the kth basis functions derivatives.
The formula to compute the kth derivative at is :
where is the knot interval number in which lies and is the degree of the BSpline basis function.
u  : A real number which is between the extrimities of the knot vector 
der  : The last derivative to be computed. 
Example : return[0] is the list of the 0th derivatives ie the basis functions. return[k] is the list of the kth derivatives.
Definition at line 363 of file vpBSpline.cpp.
References computeDersBasisFuns(), and findSpan().

static 
Find the knot interval in which the parameter lies. Indeed
Example : The knot vector is the following with is equal to 1.
l_u  : The knot whose knot interval is seeked. 
l_p  : Degree of the BSpline basis functions. 
l_knots  : The knot vector 
Definition at line 84 of file vpBSpline.cpp.
References vpMath::maximum(), and vpMath::round().
Referenced by computeBasisFuns(), vpNurbs::computeCurveDersPoint(), computeDersBasisFuns(), vpNurbs::curveKnotIns(), findSpan(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), and vpNurbs::refineKnotVectCurve().
unsigned int vpBSpline::findSpan  (  double  u  ) 
Find the knot interval in which the parameter lies. Indeed
Example : The knot vector is the following with is equal to 1.
u  : The knot whose knot interval is seeked. 
Definition at line 128 of file vpBSpline.cpp.
References findSpan().

inline 
Gets all the control points.
list  : A std::list containing the coordinates of the control points. 
Definition at line 140 of file vpBSpline.h.

inline 
Gets all the crossing points (used in the interpolation method)
list  : A std::list containing the coordinates of the crossing points. 
Definition at line 167 of file vpBSpline.h.

inline 
Gets all the knots.
list  : A std::list containing the value of the knots. 
Definition at line 153 of file vpBSpline.h.

inline 
Gets the degree of the BSpline.
Definition at line 132 of file vpBSpline.h.

inline 
Sets all the control points.
list  : A std::list containing the coordinates of the control points 
Definition at line 187 of file vpBSpline.h.

inline 
Sets all the crossing points (used in the interpolation method)
list  : A std::list containing the coordinates of the crossing points 
Definition at line 214 of file vpBSpline.h.

inline 
Sets all the knots.
list  : A std::list containing the value of the knots. 
Definition at line 200 of file vpBSpline.h.

inline 
Sets the degree of the BSpline.
degree  : the degree of the BSpline. 
Definition at line 180 of file vpBSpline.h.