Visual Servoing Platform
version 3.0.0
|
#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 B-Spline curve.
The different parameters are :
The B-Spline basis functions defined as :
where and p is the degree of the B-Spline 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 B-Splines and the implementation of all the methods in the Nurbs Book.
Definition at line 100 of file vpBSpline.h.
vpBSpline::vpBSpline | ( | ) |
Basic constructor.
The degree of the B-Spline basis functions is set to 3 to compute cubic B-Spline.
Definition at line 47 of file vpBSpline.cpp.
vpBSpline::vpBSpline | ( | const vpBSpline & | bspline | ) |
Copy constructor.
Definition at line 57 of file vpBSpline.cpp.
|
virtual |
Basic destructor.
Definition at line 69 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 B-Spline basis functions. |
l_knots | : The knot vector |
Definition at line 148 of file vpBSpline.cpp.
Referenced by computeBasisFuns(), vpNurbs::computeCurvePoint(), 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 199 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 B-Spline 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 B-Spline 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 452 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 B-Spline 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 500 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 B-Spline 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 383 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 412 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 B-Spline 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 B-Spline 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 229 of file vpBSpline.cpp.
References vpTRACE.
Referenced by vpNurbs::computeCurveDers(), 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 B-Spline 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 365 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 B-Spline basis functions. |
l_knots | : The knot vector |
Definition at line 88 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 130 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 130 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 152 of file vpBSpline.h.
|
inline |
Gets all the knots.
list | : A std::list containing the value of the knots. |
Definition at line 141 of file vpBSpline.h.
|
inline |
Gets the degree of the B-Spline.
Definition at line 123 of file vpBSpline.h.
|
inline |
Sets all the control points.
list | : A std::list containing the coordinates of the control points |
Definition at line 172 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 196 of file vpBSpline.h.
|
inline |
Sets all the knots.
list | : A std::list containing the value of the knots. |
Definition at line 184 of file vpBSpline.h.
|
inline |
Sets the degree of the B-Spline.
degree | : the degree of the B-Spline. |
Definition at line 164 of file vpBSpline.h.