Code-Eli  0.3.6
eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ > Class Template Reference

#include <piecewise_cubic_spline_creator.hpp>

Inheritance diagram for eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >:
Collaboration diagram for eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >:

Public Types

typedef piecewise_creator_base< data__, dim__, tol__ > base_class_type
 
typedef base_class_type::data_type data_type
 
typedef base_class_type::point_type point_type
 
typedef base_class_type::index_type index_type
 
typedef base_class_type::tolerance_type tolerance_type
 
- Public Types inherited from eli::geom::curve::piecewise_creator_base< data__, dim__, tol__ >
typedef data__ data_type
 
typedef Eigen::Matrix< data_type, 1, dim__ > point_type
 
typedef point_type::Index index_type
 
typedef tol__ tolerance_type
 

Public Member Functions

 piecewise_cubic_spline_creator ()
 
 piecewise_cubic_spline_creator (const index_type &ns)
 
 piecewise_cubic_spline_creator (const piecewise_cubic_spline_creator< data_type, dim__, tolerance_type > &pcc)
 
void get_segment_control_points (point_type &cp0, point_type &cp1, point_type &cp2, point_type &cp3, const index_type &i) const
 
void set_segment_control_points (const point_type &cp0, const point_type &cp1, const point_type &cp2, const point_type &cp3, const index_type &i)
 
void set_segment_point_slope (const point_type &p0, const point_type &m0, const point_type &p1, const point_type &m1, const index_type &i)
 
virtual bool create (piecewise< bezier, data_type, dim__, tolerance_type > &pc) const
 
template<typename point_it__ >
void set_chip (point_it__ itb, const eli::geom::general::continuity &end_cont)
 
template<typename point_it__ >
void set_cardinal (point_it__ itb, const data__ &c, const eli::geom::general::continuity &end_cont)
 
template<typename point_it__ >
void set_catmull_rom (point_it__ itb, const eli::geom::general::continuity &end_cont)
 
template<typename point_it__ >
void set_kochanek_bartels (point_it__ itb, const data__ &tension, const data__ &bias, const data__ &continuity, const eli::geom::general::continuity &end_cont)
 
template<typename point_it__ >
void set_cubic_spline (point_it__ itb)
 
template<typename point_it__ >
void set_clamped_cubic_spline (point_it__ itb, const point_type &start_slope, const point_type &end_slope)
 
template<typename point_it__ >
void set_natural_cubic_spline (point_it__ itb)
 
template<typename point_it__ >
void set_closed_cubic_spline (point_it__ itb)
 
template<typename point_it__ >
void set_periodic_cubic_spline (point_it__ itb)
 
- Public Member Functions inherited from eli::geom::curve::piecewise_creator_base< data__, dim__, tol__ >
 piecewise_creator_base (index_type n, const data_type &tt0)
 
 piecewise_creator_base (const piecewise_creator_base< data_type, dim__, tolerance_type > &pcb)
 
virtual ~piecewise_creator_base ()
 
index_type get_number_segments () const
 
void set_number_segments (const index_type &ns)
 
void set_t0 (const data_type &tt0)
 
data_type get_t0 () const
 
void set_segment_dt (const data_type &dtt, const index_type &i)
 
data_type get_segment_dt (const index_type &i) const
 

Private Types

typedef std::vector< point_type, Eigen::aligned_allocator< point_type > > point_collection_type
 

Private Member Functions

void number_segments_changed ()
 
template<typename Derived1__ , typename Derived2__ , typename point_it__ >
void create_cubic_spline_base_matrix (Eigen::MatrixBase< Derived1__ > &M, Eigen::MatrixBase< Derived2__ > &b, point_it__ itb)
 

Private Attributes

point_collection_type control_point
 

Member Typedef Documentation

template<typename data__, unsigned short dim__, typename tol__>
typedef piecewise_creator_base<data__, dim__, tol__> eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::base_class_type
template<typename data__, unsigned short dim__, typename tol__>
typedef base_class_type::data_type eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::data_type
template<typename data__, unsigned short dim__, typename tol__>
typedef base_class_type::index_type eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::index_type
template<typename data__, unsigned short dim__, typename tol__>
typedef std::vector<point_type, Eigen::aligned_allocator<point_type> > eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::point_collection_type
private
template<typename data__, unsigned short dim__, typename tol__>
typedef base_class_type::point_type eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::point_type
template<typename data__, unsigned short dim__, typename tol__>
typedef base_class_type::tolerance_type eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::tolerance_type

Constructor & Destructor Documentation

template<typename data__, unsigned short dim__, typename tol__>
eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::piecewise_cubic_spline_creator ( )
inline
template<typename data__, unsigned short dim__, typename tol__>
eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::piecewise_cubic_spline_creator ( const index_type ns)
inline
template<typename data__, unsigned short dim__, typename tol__>
eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::piecewise_cubic_spline_creator ( const piecewise_cubic_spline_creator< data_type, dim__, tolerance_type > &  pcc)
inline

Member Function Documentation

template<typename data__, unsigned short dim__, typename tol__>
virtual bool eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::create ( piecewise< bezier, data_type, dim__, tolerance_type > &  pc) const
inlinevirtual

Implements eli::geom::curve::piecewise_creator_base< data__, dim__, tol__ >.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename Derived1__ , typename Derived2__ , typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::create_cubic_spline_base_matrix ( Eigen::MatrixBase< Derived1__ > &  M,
Eigen::MatrixBase< Derived2__ > &  b,
point_it__  itb 
)
inlineprivate

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::get_segment_control_points ( point_type cp0,
point_type cp1,
point_type cp2,
point_type cp3,
const index_type i 
) const
inline
template<typename data__, unsigned short dim__, typename tol__>
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::number_segments_changed ( )
inlineprivatevirtual

Reimplemented from eli::geom::curve::piecewise_creator_base< data__, dim__, tol__ >.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_cardinal ( point_it__  itb,
const data__ &  c,
const eli::geom::general::continuity end_cont 
)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points using a cardinal spline. The cardinal spline requires a tension parameter which controls to strength of the slopes. The end slopes use the same tension term, but are one-sided differences unless the end condition is C1-continuous, in which the standard slope algorithm is used. The resulting piecewise curves are C1 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_catmull_rom ( point_it__  itb,
const eli::geom::general::continuity end_cont 
)
inline

This create a 3rd order piecewise Bezier curve that interpolates the given points using a Catmull-Rom spline. This is the same as the cardinal spline with the tension term set to zero.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_chip ( point_it__  itb,
const eli::geom::general::continuity end_cont 
)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points with Piecewise Cubit Hermite Interpolating Polynomials. The slopes at the joints are approximated via 2nd order finite differences. Interior slopes are calculated using central differences. The end slopes are either one-sided differences unless the end condition is C1-continuous, in which case central difference is used. The resulting piecewise curves are C1 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_clamped_cubic_spline ( point_it__  itb,
const point_type start_slope,
const point_type end_slope 
)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points enforcing C1 and C2 constraints at the knots. The slopes are set at the ends to complete the specification of the curve. The resulting piecewise curves are C2 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_closed_cubic_spline ( point_it__  itb)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points enforcing C1 and C2 constraints at the knots. The closed condition (with specified smoothness) is used to complete the specification of the curve. The resulting piecewise curves are C2 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_cubic_spline ( point_it__  itb)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points enforcing C1 and C2 constraints at the knots. The not-a-knot condition is used to complete the specification of the curve. The resulting piecewise curves are C2 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_kochanek_bartels ( point_it__  itb,
const data__ &  tension,
const data__ &  bias,
const data__ &  continuity,
const eli::geom::general::continuity end_cont 
)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points using a Kochanek-Bartels spline. The Kochanek-Bartels spline requires three terms (tension, bias and continuity) that control the shape of the curve near the knots. The end slopes use the same tension, bias and continuity terms, but only use half of the slope term unless the end condition is C1-continuous, in which the standard slope algorithm is used. The resulting piecewise curves are C1 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_natural_cubic_spline ( point_it__  itb)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points enforcing C1 and C2 constraints at the knots. The natural condition is used to complete the specification of the curve. The resulting piecewise curves are C2 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
template<typename point_it__ >
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_periodic_cubic_spline ( point_it__  itb)
inline

This creates a 3rd order piecewise Bezier curve that interpolates the given points enforcing C1 and C2 constraints at the knots. The periodic condition (f' and f'' are the same at both ends) is used to complete the specification of the curve. The resulting piecewise curves are C2 continuous.

Here is the call graph for this function:

template<typename data__, unsigned short dim__, typename tol__>
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_segment_control_points ( const point_type cp0,
const point_type cp1,
const point_type cp2,
const point_type cp3,
const index_type i 
)
inline
template<typename data__, unsigned short dim__, typename tol__>
void eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::set_segment_point_slope ( const point_type p0,
const point_type m0,
const point_type p1,
const point_type m1,
const index_type i 
)
inline

Here is the call graph for this function:

Member Data Documentation

template<typename data__, unsigned short dim__, typename tol__>
point_collection_type eli::geom::curve::piecewise_cubic_spline_creator< data__, dim__, tol__ >::control_point
private

The documentation for this class was generated from the following file: