![]() |
Visual Servoing Platform version 3.7.0
|
#include <vpBSpline.h>
Public Member Functions | |
| 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) const |
| vpBasisFunction * | computeBasisFuns (double u) const |
| vpBasisFunction ** | computeDersBasisFuns (double u, unsigned int der) const |
| vpImagePoint | computeCurvePoint (double u) const |
| vpImagePoint * | computeCurveDers (double u, unsigned int der) const |
Static Public Member Functions | |
| static unsigned int | findSpan (double l_u, unsigned int l_p, const std::vector< double > &l_knots) |
| static vpBasisFunction * | computeBasisFuns (double l_u, unsigned int l_i, unsigned int l_p, const std::vector< double > &l_knots) |
| static vpBasisFunction ** | computeDersBasisFuns (double l_u, unsigned int l_i, unsigned int l_p, unsigned int l_der, const std::vector< double > &l_knots) |
| static vpImagePoint | computeCurvePoint (double l_u, unsigned int l_i, unsigned int l_p, const std::vector< double > &l_knots, const std::vector< vpImagePoint > &l_controlPoints) |
| static vpImagePoint * | computeCurveDers (double l_u, unsigned int l_i, unsigned int l_p, unsigned int l_der, const std::vector< double > &l_knots, const std::vector< vpImagePoint > &l_controlPoints) |
Public Attributes | |
| : std::vector<vpImagePoint> controlPoints | |
| std::vector< double > | knots |
| unsigned int | p |
| std::vector< vpImagePoint > | crossingPoints |
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 107 of file vpBSpline.h.
| BEGIN_VISP_NAMESPACE vpBSpline::vpBSpline | ( | ) |
Basic constructor.
The degree
of the B-Spline basis functions is set to 3 to compute cubic B-Spline.
Definition at line 43 of file vpBSpline.cpp.
References crossingPoints, knots, and p.
Referenced by vpNurbs::vpNurbs().
|
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 extremities of the knot vector. |
| l_i | : The number of the knot interval in which |
| l_p | : Degree of the B-Spline basis functions. |
| l_knots | : The knot vector. |
Definition at line 124 of file vpBSpline.cpp.
Referenced by computeBasisFuns(), computeCurvePoint(), computeCurvePoint(), vpNurbs::computeCurvePoint(), vpNurbs::computeCurvePoint(), vpNurbs::globalCurveApprox(), and vpNurbs::globalCurveInterp().
| vpBasisFunction * vpBSpline::computeBasisFuns | ( | double | u | ) | const |
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 extremities of the knot vector |
Definition at line 175 of file vpBSpline.cpp.
References computeBasisFuns(), findSpan(), knots, and p.
|
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 extremities of the knot vector. |
| l_i | : The number of the knot interval in which |
| 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 428 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 ) const |
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 extremities of the knot vector |
| der | : The last derivative to be computed. |
Definition at line 474 of file vpBSpline.cpp.
References computeDersBasisFuns(), p, 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 extremities of the knot vector. |
| l_i | : The number of the knot interval in which |
| l_p | : Degree of the B-Spline basis functions. |
| l_knots | : The knot vector. |
| l_controlPoints | : the list of control points. |
Definition at line 359 of file vpBSpline.cpp.
References computeBasisFuns(), vpImagePoint::set_i(), and vpImagePoint::set_j().
| vpImagePoint vpBSpline::computeCurvePoint | ( | double | u | ) | const |
Compute the coordinates of a point
corresponding to the knot
.
| u | : A real number which is between the extremities of the knot vector. |
Definition at line 388 of file vpBSpline.cpp.
References computeBasisFuns(), p, 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 extremities of the knot vector. |
| l_i | : The number of the knot interval in which |
| 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 211 of file vpBSpline.cpp.
References vpTRACE.
Referenced by computeCurveDers(), computeCurveDers(), vpNurbs::computeCurveDers(), vpNurbs::computeCurveDers(), and computeDersBasisFuns().
| vpBasisFunction ** vpBSpline::computeDersBasisFuns | ( | double | u, |
| unsigned int | der ) const |
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 extremities 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 341 of file vpBSpline.cpp.
References computeDersBasisFuns(), findSpan(), knots, and p.
|
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 63 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 | ) | const |
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 106 of file vpBSpline.cpp.
References findSpan(), knots, and p.
|
inline |
Gets all the control points.
| list | : A std::list containing the coordinates of the control points. |
Definition at line 135 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 162 of file vpBSpline.h.
References crossingPoints.
|
inline |
Gets all the knots.
| list | : A std::list containing the value of the knots. |
Definition at line 148 of file vpBSpline.h.
References knots.
|
inline |
Gets the degree of the B-Spline.
Definition at line 127 of file vpBSpline.h.
References p.
|
inline |
Sets all the control points.
| list | : A std::list containing the coordinates of the control points |
Definition at line 182 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 209 of file vpBSpline.h.
References crossingPoints.
|
inline |
Sets all the knots.
| list | : A std::list containing the value of the knots. |
Definition at line 195 of file vpBSpline.h.
References knots.
|
inline |
Sets the degree of the B-Spline.
| degree | : the degree of the B-Spline. |
Definition at line 175 of file vpBSpline.h.
| vpBSpline::__pad0__ |
Definition at line 236 of file vpBSpline.h.
| std::vector<vpImagePoint> vpBSpline::crossingPoints |
Vector which contains the points used during the interpolation method.
Definition at line 117 of file vpBSpline.h.
Referenced by get_crossingPoints(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), set_crossingPoints(), and vpBSpline().
| std::vector<double> vpBSpline::knots |
Vector which contain the knots
.
Definition at line 113 of file vpBSpline.h.
Referenced by computeBasisFuns(), vpNurbs::computeCurveDersPoint(), computeDersBasisFuns(), vpNurbs::curveKnotIns(), findSpan(), get_knots(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), vpNurbs::globalCurveInterp(), vpNurbs::globalCurveInterp(), vpNurbs::globalCurveInterp(), vpNurbs::refineKnotVectCurve(), vpNurbs::removeCurveKnot(), set_knots(), and vpBSpline().
| unsigned int vpBSpline::p |
Degree of the B-Spline basis functions.
Definition at line 115 of file vpBSpline.h.
Referenced by computeBasisFuns(), computeCurveDers(), vpNurbs::computeCurveDers(), vpNurbs::computeCurveDersPoint(), computeCurvePoint(), vpNurbs::computeCurvePoint(), computeDersBasisFuns(), vpNurbs::curveKnotIns(), findSpan(), get_p(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveApprox(), vpNurbs::globalCurveInterp(), vpNurbs::globalCurveInterp(), vpNurbs::globalCurveInterp(), vpNurbs::globalCurveInterp(), vpNurbs::refineKnotVectCurve(), vpNurbs::removeCurveKnot(), vpBSpline(), and vpNurbs::vpNurbs().