|
| template<typename Time = double, typename Numeric = Time, bool Safe = false, typename Point = Eigen::Matrix<Numeric, Eigen::Dynamic, 1>> |
| ndcurves::bezier_curve curve_abc | ndcurves::waypoints () const |
| | bezier_curve () |
| | Empty constructor. Curve obtained this way can not perform other class functions.
|
| template<typename In> |
| | bezier_curve (In PointsBegin, In PointsEnd, const time_t T_min=0., const time_t T_max=1., const time_t mult_T=1.) |
| | Constructor. Given the first and last point of a control points set, create the bezier curve.
|
| template<typename In> |
| | bezier_curve (In PointsBegin, In PointsEnd, const curve_constraints_t &constraints, const time_t T_min=0., const time_t T_max=1., const time_t mult_T=1.) |
| | Constructor with constraints. This constructor will add 4 points (2 after the first one, 2 before the last one) to ensure that velocity and acceleration constraints are respected.
|
| | bezier_curve (const bezier_curve &other) |
| virtual | ~bezier_curve () |
| | Destructor.
|
| virtual point_t | operator() (const time_t t) const |
| | Evaluation of the bezier curve at time t.
|
| bool | isApprox (const bezier_curve_t &other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const |
| | isApprox check if other and *this are approximately equals. Only two curves of the same class can be approximately equals, for comparison between different type of curves see isEquivalent
|
| virtual bool | isApprox (const curve_abc_t *other, const Numeric prec=Eigen::NumTraits< Numeric >::dummy_precision()) const |
| virtual bool | operator== (const bezier_curve_t &other) const |
| virtual bool | operator!= (const bezier_curve_t &other) const |
| bezier_curve_t | compute_derivate (const std::size_t order) const |
| | Compute the derived curve at order N. Computes the derivative order N, \(\frac{d^Nx(t)}{dt^N}\) of bezier curve of parametric equation x(t).
|
| bezier_curve_t * | compute_derivate_ptr (const std::size_t order) const |
| | Compute the derived curve at order N.
|
| bezier_curve_t | compute_primitive (const std::size_t order, const point_t &init) const |
| | Compute the primitive of the curve at order N. Computes the primitive at order N of bezier curve of parametric equation \(x(t)\).
At order \(N=1\), the primitve \(X(t)\) of \(x(t)\) is such as \(\frac{dX(t)}{dt} = x(t)\).
|
| bezier_curve_t | compute_primitive (const std::size_t order) const |
| bezier_curve_t * | compute_primitive_ptr (const std::size_t order, const point_t &init) const |
| bezier_curve_t | elevate (const std::size_t order) const |
| | Computes a Bezier curve of order degrees higher than the current curve, but strictly equivalent. Order elevation is required for addition / substraction and other comparison operations.
|
| void | elevate_self (const std::size_t order) |
| | Elevate the Bezier curve of order degrees higher than the current curve, but strictly equivalent. Order elevation is required for addition / substraction and other comparison operations.
|
| virtual point_t | derivate (const time_t t, const std::size_t order) const |
| | Evaluate the derivative order N of curve at time t. If derivative is to be evaluated several times, it is rather recommended to compute derived curve using compute_derivate.
|
| point_t | evalBernstein (const Numeric t) const |
| | Evaluate all Bernstein polynomes for a certain degree. A bezier curve with N control points is represented by : \(x(t) =
\sum_{i=0}^{N} B_i^N(t) P_i\) with \( B_i^N(t) = \binom{N}{i}t^i
(1-t)^{N-i} \).
Warning: the horner scheme is about 100 times faster than this method.
This method will probably be removed in the future as the computation of bernstein polynomial is very costly.
|
| const point_t | ndcurves::waypointAtIndex (const std::size_t index) const |
| point_t | ndcurves::evalDeCasteljau (const Numeric t) const |
| | Evaluate the curve value at time t using deCasteljau algorithm. The algorithm will compute the \(N-1\) centroids of parameters \({t,1-t}\) of consecutive \(N\) control points of bezier curve, and perform it iteratively until getting one point in the list which will be the evaluation of bezier curve at time \(t\).
|
| t_point_t | ndcurves::deCasteljauReduction (const Numeric t) const |
| t_point_t | ndcurves::deCasteljauReduction (const t_point_t &pts, const Numeric u) const |
| | Compute de Casteljau's reduction of the given list of points at time t. For the list \(pts\) of N points, compute a new list of points of size N-1 :
\(<br>( pts[0]*(1-t)+pts[1], pts[1]*(1-t)+pts[2], ...,
pts[0]*(N-2)+pts[N-1] )\)
with t the time when to evaluate bezier curve.
\ The new list contains centroid of parameters \({t,1-t}\) of consecutive points in the list.
|
| std::pair< bezier_curve_t, bezier_curve_t > | ndcurves::split (const Numeric t) const |
| | Split the bezier curve in 2 at time t.
|
| piecewise_curve_t | ndcurves::split (const vector_x_t ×) const |
| | Split the bezier curve in several curves, all accessible within a piecewise_curve_t.
|
| bezier_curve_t | ndcurves::extract (const Numeric t1, const Numeric t2) |
| | Extract a bezier curve defined between \([t_1,t_2]\) from the actual bezier curve defined between \([T_{min},T_{max}]\) with \(T_{min} \leq t_1
\leq t_2 \leq T_{max}\).
|
| bezier_curve_t | ndcurves::cross (const bezier_curve_t &g) const |
| | Compute the cross product of the current bezier curve by another bezier curve. The cross product p1Xp2 of 2 bezier curves p1 and p2 is defined such that forall t, p1Xp2(t) = p1(t) X p2(t), with X designing the cross product. This method of course only makes sense for dimension 3 curves. It assumes that a method point_t cross(const point_t&, const point_t&) has been defined.
|
| bezier_curve_t | ndcurves::cross (const bezier_curve_t::point_t &point) const |
| | Compute the cross product of the current bezier b by a point point. The cross product pXpoint of is defined such that forall t, bXpoint(t) = b(t) X point, with X designing the cross product. This method of course only makes sense for dimension 3 polynomials.
|
| bezier_curve_t & | ndcurves::operator+= (const bezier_curve_t &other) |
| bezier_curve_t & | ndcurves::operator-= (const bezier_curve_t &other) |
| bezier_curve_t & | ndcurves::operator+= (const bezier_curve_t::point_t &point) |
| bezier_curve_t & | ndcurves::operator-= (const bezier_curve_t::point_t &point) |
| bezier_curve_t & | ndcurves::operator/= (const double d) |
| bezier_curve_t & | ndcurves::operator*= (const double d) |
| virtual std::size_t | ndcurves::dim () const |
| | Get dimension of curve.
|
| virtual time_t | ndcurves::min () const |
| | Get the minimum time for which the curve is defined.
|
| virtual time_t | ndcurves::max () const |
| | Get the maximum time for which the curve is defined.
|
| virtual std::size_t | ndcurves::degree () const |
| | Get the degree of the curve.
|
| template<class Archive> |
| void | ndcurves::serialize (Archive &ar, const unsigned int version) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator+ (const bezier_curve< T, N, S, P > &p1, const bezier_curve< T, N, S, P > &p2) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator- (const bezier_curve< T, N, S, P > &p1) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator- (const bezier_curve< T, N, S, P > &p1, const bezier_curve< T, N, S, P > &p2) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator- (const bezier_curve< T, N, S, P > &p1, const typename bezier_curve< T, N, S, P >::point_t &point) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator- (const typename bezier_curve< T, N, S, P >::point_t &point, const bezier_curve< T, N, S, P > &p1) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator+ (const bezier_curve< T, N, S, P > &p1, const typename bezier_curve< T, N, S, P >::point_t &point) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator+ (const typename bezier_curve< T, N, S, P >::point_t &point, const bezier_curve< T, N, S, P > &p1) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator/ (const bezier_curve< T, N, S, P > &p1, const double k) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator* (const bezier_curve< T, N, S, P > &p1, const double k) |
| template<typename T, typename N, bool S, typename P> |
| bezier_curve< T, N, S, P > | operator* (const double k, const bezier_curve< T, N, S, P > &p1) |