33 #ifndef __usPolynomialCurve3D_h_
34 #define __usPolynomialCurve3D_h_
38 #include <visp3/core/vpColVector.h>
39 #include <visp3/core/vpHomogeneousMatrix.h>
40 #include <visp3/core/vpMatrix.h>
83 void setOrder(
unsigned int order);
88 unsigned int getOrder()
const;
93 void setStartParameter(
double startParameter);
98 double getStartParameter()
const;
103 void setEndParameter(
double endParameter);
108 double getEndParameter()
const;
115 void setBoundaries(
double startParameter,
double endParamter);
120 void setParametricLength(
double length);
125 double getParametricLength()
const;
130 void setLength(
double length,
double precision = 1e-4);
135 double getLength(
int nbCountSeg = 50)
const;
140 void setPolynomialCoefficients(
const vpMatrix &polynomialCoefficients);
145 vpMatrix getPolynomialCoefficients()
const;
150 vpColVector getPoint(
double parameter)
const;
155 vpMatrix getPoints(
const vpColVector ¶meters)
const;
160 vpColVector getStartPoint()
const;
165 vpColVector getEndPoint()
const;
170 vpColVector getTangent(
double parameter)
const;
175 vpColVector getStartTangent()
const;
180 vpColVector getEndTangent()
const;
185 vpColVector getDerivative(
double parameter,
unsigned int order)
const;
195 void defineFromPoints(
const std::vector<vpColVector> &points,
const std::vector<double> ¶m,
196 unsigned int order = 0);
206 void defineFromPoints(
const vpMatrix points,
const vpColVector ¶m,
unsigned int order = 0);
216 void defineFromPointsAuto(
const std::vector<vpColVector> &points,
unsigned int order = 0);
226 void defineFromPointsAuto(
const vpMatrix &points,
unsigned int order = 0);
238 void defineFromPointsAuto(
const std::vector<vpColVector> &points,
const vpColVector &direction,
239 unsigned int order = 0);
251 void defineFromPointsAuto(
const vpMatrix &points,
const vpColVector &direction,
unsigned int order = 0);
262 void defineFromWeightedPoints(
const std::vector<vpColVector> &points,
const std::vector<double> ¶m,
263 const std::vector<double> &weights,
unsigned int order = 0);
274 void defineFromWeightedPoints(
const vpMatrix &points,
const vpColVector ¶m,
const vpColVector &weights,
275 unsigned int order = 0);
286 void defineFromWeightedPointsAuto(
const std::vector<vpColVector> &points,
const std::vector<double> &weights,
287 unsigned int order = 0);
298 void defineFromWeightedPointsAuto(
const vpMatrix &points,
const vpColVector &weights,
unsigned int order = 0);
311 void defineFromWeightedPointsAuto(
const std::vector<vpColVector> &points,
const std::vector<double> &weights,
312 const vpColVector &direction,
unsigned int order = 0);
325 void defineFromWeightedPointsAuto(
const vpMatrix &points,
const vpColVector &weights,
const vpColVector &direction,
326 unsigned int order = 0);
333 double getCurvature(
double param)
const;
343 double getCurvatureFromShape(
double start,
double end, vpColVector ¢er3D, vpColVector &direction3D)
const;
350 double getMeanAxisDeviation(
int nbCountSeg = 50)
const;
358 void setControlPoints(
const vpMatrix &controlPoints);
363 void setControlPoints(
double **controlPoints);
368 vpMatrix getControlPoints()
const;
373 vpMatrix getRenderingPoints()
const;
383 usPolynomialCurve3D getSubPolynomialCurve(
double startParameter,
double endParameter)
const;
394 void changeCoefficientsToFitBoundaries(
double startParameter,
double endParameter);
404 void changeCoefficientsToFitMetricLength();
409 void move(
const vpHomogeneousMatrix &H);
414 void move(
double x,
double y,
double z,
double tx,
double ty,
double tz);
419 void scale(
double s);
424 friend VISP_EXPORT std::ostream &operator<<(std::ostream &s,
const usPolynomialCurve3D &seg);
427 friend VISP_EXPORT std::ostream &operator<<=(std::ostream &s,
const usPolynomialCurve3D &seg);
vpMatrix m_polynomialCoefficients