13 #ifndef geom_curve_fit_container_hpp
14 #define geom_curve_fit_container_hpp
18 #include "eli/code_eli.hpp"
33 template<
typename data_type__,
typename index_type__,
size_t dim__,
size_t con_dim__>
53 typedef Eigen::Matrix<data_type, 1, con_dim__>
point_type;
71 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
91 void set_fp(
const point_type &p,
bool fd)
101 void set_fpp(
const point_type &p,
bool pfd,
const point_type &pp,
bool ppfd)
121 std::vector<point_type, Eigen::aligned_allocator<point_type> >
points;
129 if ( (i>=0) && (i<static_cast<index_type>(
number_points())) )
135 void evaluate_fp(constraint_point_type &fp,
const index_type &i)
const
156 d.set_stencil(fd1_type::CENTER);
168 d.set_stencil(fd1_type::LEFT);
177 d.set_stencil(fd1_type::CENTER);
187 d.set_stencil(fd1_type::CENTER);
197 if (dim__==con_dim__)
214 data_type y[3], fpj(0);
215 for (
size_t j=0; j<con_dim__; ++j)
220 d.evaluate(fpj, y, t);
225 void evaluate_fpp(constraint_point_type &fpp,
const index_type &i)
const
247 d.set_stencil(fd2_type::LEFT_BIASED);
260 d.set_stencil(fd2_type::RIGHT_BIASED);
270 d.set_stencil(fd2_type::LEFT_BIASED);
283 d.set_stencil(fd2_type::LEFT_BIASED);
293 d.set_stencil(fd2_type::RIGHT_BIASED);
306 d.set_stencil(fd2_type::LEFT);
316 d.set_stencil(fd2_type::RIGHT_BIASED);
327 d.set_stencil(fd2_type::RIGHT_BIASED);
338 if (dim__==con_dim__)
358 data_type y[4], fppj(0);
359 for (
size_t j=0; j<con_dim__; ++j)
365 d.evaluate(fppj, y, t);
379 typename constraint_collection::const_iterator it;
380 size_t ncon(0), nfit=fit?1:0;
382 for (it=constraints.begin(); it!=constraints.end(); ++it)
406 typename constraint_collection::const_iterator it;
418 for (
size_t i=0; i<4; ++i)
420 it=constraints.find(indx[i]);
421 if (it!=constraints.end())
443 template<
typename it__>
447 points.insert(points.begin(), itb, ite);
450 template<
typename it__>
453 std::copy(points.begin(), points.end(), itb);
482 typename constraint_collection::const_iterator it=constraints.find(i);
483 if (it==constraints.end())
586 constraint_point_type fp;
622 constraint_point_type fp;
626 constraint_point_type fpp;
631 ci.
set_fpp(fp,
true, fpp,
true);
648 constraint_point_type fpp;
653 ci.
set_fpp(fp,
false, fpp,
true);
667 ci.
set_fpp(fp,
false, fpp,
false);
679 typename constraint_collection::iterator it=constraints.find(i);
680 if (it==constraints.end())
683 constraints.erase(it);
687 template<
typename it__>
690 typename constraint_collection::const_iterator it;
691 for (it=constraints.begin(); it!=constraints.end(); ++it, ++itout)
constraint_info(const constraint_info &ci)
Definition: fit_container.hpp:68
point_type fpp
Definition: fit_container.hpp:63
error_code get_constraint(const index_type &i, constraint_info &ci, point_type &pt) const
Definition: fit_container.hpp:491
Definition: fit_container.hpp:46
Definition: continuity.hpp:26
use_states use_fpp
Definition: fit_container.hpp:64
Derived1__::Scalar distance(const Eigen::MatrixBase< Derived1__ > &p1, const Eigen::MatrixBase< Derived2__ > &p2)
Definition: distance.hpp:33
error_code add_start_C2_constraint()
Definition: fit_container.hpp:517
use_states using_fp() const
Definition: fit_container.hpp:88
Eigen::Matrix< data_type, 1, con_dim__ > point_type
Definition: fit_container.hpp:53
void set_stencil(const stencil &s)
Definition: d1o2.hpp:70
void set_fpp(const point_type &p, bool pfd, const point_type &pp, bool ppfd)
Definition: fit_container.hpp:101
data_type__ data_type
Definition: fit_container.hpp:37
constraint_info::point_type constraint_point_type
Definition: fit_container.hpp:117
error_code add_start_C1_constraint(const constraint_point_type &fp)
Definition: fit_container.hpp:512
error_code add_C0_constraint(const index_type &i)
Definition: fit_container.hpp:562
void set_stencil(const stencil &s)
Definition: d2o2.hpp:74
Definition: fit_container.hpp:45
size_t number_constraint_points() const
Definition: fit_container.hpp:375
bool valid_index(const index_type &i) const
Definition: fit_container.hpp:127
std::map< index_type, constraint_info > constraint_collection
Definition: fit_container.hpp:122
error_code add_C2_constraint(const index_type &i)
Definition: fit_container.hpp:611
error_code get_end_constraint(constraint_info &ci) const
Definition: fit_container.hpp:466
fit_container()
Definition: fit_container.hpp:371
size_t number_points() const
Definition: fit_container.hpp:374
error_code get_end_constraint(constraint_info &ci, point_type &pt) const
Definition: fit_container.hpp:471
EIGEN_MAKE_ALIGNED_OPERATOR_NEW constraint_info & operator=(const constraint_info &ci)
Definition: fit_container.hpp:73
Definition: fit_container.hpp:34
error_code add_end_C2_constraint(const constraint_point_type &fp, const constraint_point_type &fpp)
Definition: fit_container.hpp:557
error_code add_C1_constraint(const index_type &i, const constraint_point_type &fp)
Definition: fit_container.hpp:597
error_code get_start_constraint(constraint_info &ci) const
Definition: fit_container.hpp:456
use_states using_fpp() const
Definition: fit_container.hpp:89
error_code add_start_C2_constraint(const constraint_point_type &fp, const constraint_point_type &fpp)
Definition: fit_container.hpp:527
void set_fp(const point_type &p, bool fd)
Definition: fit_container.hpp:91
error_code get_start_constraint(constraint_info &ci, point_type &pt) const
Definition: fit_container.hpp:461
error_code add_start_C0_constraint()
Definition: fit_container.hpp:502
Definition: fit_container.hpp:43
error_code remove_constraint(const index_type &i)
Definition: fit_container.hpp:673
error_code add_end_C0_constraint()
Definition: fit_container.hpp:532
error_code add_start_C1_constraint()
Definition: fit_container.hpp:507
use_states
Definition: fit_container.hpp:55
error_code get_constraint(const index_type &i, constraint_info &ci) const
Definition: fit_container.hpp:476
Definition: fit_container.hpp:44
std::vector< point_type, Eigen::aligned_allocator< point_type > > points
Definition: fit_container.hpp:121
point_type get_fpp() const
Definition: fit_container.hpp:87
const eli::geom::general::continuity & get_end_flag() const
Definition: fit_container.hpp:397
Definition: fit_container.hpp:58
constraint_collection constraints
Definition: fit_container.hpp:124
void evaluate_fpp(constraint_point_type &fpp, const index_type &i) const
Definition: fit_container.hpp:225
void evaluate_fp(constraint_point_type &fp, const index_type &i) const
Definition: fit_container.hpp:135
Definition: fit_container.hpp:47
Definition: fit_container.hpp:59
point_type fp
Definition: fit_container.hpp:63
error_code add_C1_constraint(const index_type &i)
Definition: fit_container.hpp:575
void set_end_flag(const eli::geom::general::continuity &op)
Definition: fit_container.hpp:399
Definition: fit_container.hpp:57
~constraint_info()
Definition: fit_container.hpp:69
error_code add_end_C2_constraint(const constraint_point_type &fp)
Definition: fit_container.hpp:552
error_code add_start_C2_constraint(const constraint_point_type &fp)
Definition: fit_container.hpp:522
use_states use_fp
Definition: fit_container.hpp:64
point_type get_fp() const
Definition: fit_container.hpp:86
index_type__ index_type
Definition: fit_container.hpp:38
~fit_container()
Definition: fit_container.hpp:372
error_code add_end_C1_constraint(const constraint_point_type &fp)
Definition: fit_container.hpp:542
continuity
Definition: continuity.hpp:24
error_code
Definition: fit_container.hpp:41
bool open() const
Definition: fit_container.hpp:395
Definition: fit_container.hpp:50
void get_points(it__ itb) const
Definition: fit_container.hpp:451
error_code add_end_C2_constraint()
Definition: fit_container.hpp:547
void set_points(it__ itb, it__ ite)
Definition: fit_container.hpp:444
error_code add_C2_constraint(const index_type &i, const constraint_point_type &fp, const constraint_point_type &fpp)
Definition: fit_container.hpp:659
error_code add_end_C1_constraint()
Definition: fit_container.hpp:537
size_t number_constraints(bool fit=true) const
Definition: fit_container.hpp:377
error_code get_constraint_indexes(it__ itout) const
Definition: fit_container.hpp:688
Eigen::Matrix< data_type, 1, dim__ > point_type
Definition: fit_container.hpp:39
bool closed() const
Definition: fit_container.hpp:396
constraint_info()
Definition: fit_container.hpp:67
error_code add_C2_constraint(const index_type &i, const constraint_point_type &fp)
Definition: fit_container.hpp:637
eli::geom::general::continuity end_continuity
Definition: fit_container.hpp:120