46 #include <visp3/core/vpImagePoint.h>
50 #include <visp3/core/vpMatrix.h>
52 #ifndef DOXYGEN_SHOULD_SKIP_THIS
63 typedef struct vpBasisFunction{
104 std::vector<vpImagePoint> controlPoints;
106 std::vector<double> knots;
110 std::vector<vpImagePoint> crossingPoints;
123 inline unsigned int get_p()
const {
return p;}
132 for (
unsigned int i = 0; i < controlPoints.size(); i++)
133 list.push_back(*(&(controlPoints[0])+i));
143 for (
unsigned int i = 0; i < knots.size(); i++)
144 list.push_back(*(&(knots[0])+i));
154 for (
unsigned int i = 0; i < crossingPoints.size(); i++)
155 list.push_back(*(&(crossingPoints[0])+i));
164 inline void set_p(
unsigned int degree) {this->p = degree;}
173 controlPoints.clear();
174 for(std::list<vpImagePoint>::const_iterator it = list.begin(); it!=list.end(); ++it){
175 controlPoints.push_back(*it);
186 for(std::list<double>::const_iterator it = list.begin(); it!=list.end(); ++it){
187 knots.push_back(*it);
197 crossingPoints.clear();
198 for(std::list<vpImagePoint>::const_iterator it=list.begin(); it!=list.end(); ++it){
199 crossingPoints.push_back(*it);
203 static unsigned int findSpan(
double l_u,
unsigned int l_p, std::vector<double> &l_knots);
204 unsigned int findSpan(
double u);
206 static vpBasisFunction* computeBasisFuns(
double l_u,
unsigned int l_i,
unsigned int l_p, std::vector<double> &l_knots);
207 vpBasisFunction* computeBasisFuns(
double u);
209 static vpBasisFunction** computeDersBasisFuns(
double l_u,
unsigned int l_i,
unsigned int l_p,
unsigned int l_der, std::vector<double> &l_knots);
210 vpBasisFunction** computeDersBasisFuns(
double u,
unsigned int der);
212 static vpImagePoint computeCurvePoint(
double l_u,
unsigned int l_i,
unsigned int l_p, std::vector<double> &l_knots, std::vector<vpImagePoint> &l_controlPoints);
215 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);
216 vpImagePoint* computeCurveDers(
double u,
unsigned int der);
void get_controlPoints(std::list< vpImagePoint > &list) const
void get_crossingPoints(std::list< vpImagePoint > &list) const
void set_p(unsigned int degree)
void set_crossingPoints(const std::list< vpImagePoint > &list)
unsigned int get_p() const
void set_controlPoints(const std::list< vpImagePoint > &list)
Class that provides tools to compute and manipulate a B-Spline curve.
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
void get_knots(std::list< double > &list) const
void set_knots(const std::list< double > &list)