![]() |
ViSP
3.0.0
|
#include <visp3/core/vpBSpline.h>
Inheritance diagram for vpBSpline: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 :
where the knots
are real number such as
. To define a curve, the knot vector is such as :
where
and
are real numbers and p is the degree of the B-Spline basis functions.The B-Spline basis functions
defined as :
where
and p is the degree of the B-Spline basis functions.
which are defined by the coordinates
of a point in an image.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 |
. The size of the array is
. 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 |
. The size of the array is
. 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. |
for
. The kth derivative is in the kth cell of the array. 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. |
for
. The kth derivative is in the kth cell of the array. 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.
must be under or equal
.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.
must be under or equal
.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.
equal to 0.5 the method will retun 1.
equal to 2.5 the method will retun 3.
equal to 3 the method will retun 3.| l_u | : The knot whose knot interval is seeked. |
| l_p | : Degree of the B-Spline basis functions. |
| l_knots | : The knot vector |
lies. 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.
equal to 0.5 the method will retun 1.
equal to 2.5 the method will retun 3.
equal to 3 the method will retun 3.| u | : The knot whose knot interval is seeked. |
lies. 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.