13 #ifndef eli_geom_surface_piecewise_connection_data_hpp
14 #define eli_geom_surface_piecewise_connection_data_hpp
16 #include "eli/code_eli.hpp"
31 template<
typename data__,
unsigned short dim__,
typename tol__>
134 template<
typename output_it__>
138 auto comp = [&tol](
const data_type &x1,
const data_type &x2)->
bool
140 return tol.approximately_less_than(x1, x2);
143 std::vector<data_type> jts1, jts, jts_out;
149 std::swap(jts, jts1);
153 std::set_union(jts.begin(), jts.end(), jts1.begin(), jts1.end(), std::back_inserter(jts_out), comp);
154 std::swap(jts, jts_out);
164 std::swap(jts, jts1);
168 std::set_union(jts.begin(), jts.end(), jts1.begin(), jts1.end(), std::back_inserter(jts_out), comp);
169 std::swap(jts, jts_out);
179 std::swap(jts, jts1);
183 std::set_union(jts.begin(), jts.end(), jts1.begin(), jts1.end(), std::back_inserter(jts_out), comp);
184 std::swap(jts, jts_out);
194 std::swap(jts, jts1);
198 std::set_union(jts.begin(), jts.end(), jts1.begin(), jts1.end(), std::back_inserter(jts_out), comp);
199 std::swap(jts, jts_out);
209 std::swap(jts, jts1);
213 std::set_union(jts.begin(), jts.end(), jts1.begin(), jts1.end(), std::back_inserter(jts_out), comp);
214 std::swap(jts, jts_out);
220 std::copy(jts.begin(), jts.end(), it_in);
224 template<
typename it1__,
typename it2__>
225 void split(it1__ itb, it1__ ite, it2__ itd)
227 index_type i, njoints(0);
228 for (it1__ it=itb; it!=ite; ++it, ++njoints)
252 index_type nsegs(njoints-1);
253 std::vector<index_type> deg(nsegs), max_deg(nsegs, 0);
257 for (i=0; i<nsegs; ++i)
259 if (deg[i]>max_deg[i])
268 for (i=0; i<nsegs; ++i)
270 if (deg[i]>max_deg[i])
279 for (i=0; i<nsegs; ++i)
281 if (deg[i]>max_deg[i])
290 for (i=0; i<nsegs; ++i)
292 if (deg[i]>max_deg[i])
301 for (i=0; i<nsegs; ++i)
303 if (deg[i]>max_deg[i])
310 for (i=0; i<nsegs; ++i, ++itd)
316 template<
typename it__>
324 for (i=0, it=itb; it!=ite; ++it, ++i)
383 const curve_type &
get_f()
const {
return f;}
439 void get_fp(curve_type &fpl, curve_type &fpr)
const
517 void get_fpp(curve_type &fppl, curve_type &fppr)
const
bool set_right_fp(const curve_type &fpr)
Definition: piecewise_connection_data.hpp:409
bool operator!=(const connection_data &cd) const
Definition: piecewise_connection_data.hpp:122
bool set_fpp(const curve_type &p)
Definition: piecewise_connection_data.hpp:501
const curve_type & get_f() const
Definition: piecewise_connection_data.hpp:383
curve_type fp_left
Definition: piecewise_connection_data.hpp:635
bool unset_right_fp()
Definition: piecewise_connection_data.hpp:456
data_type get_t0() const
Definition: piecewise_connection_data.hpp:124
void get_parameters(it__ itt) const
Definition: piecewise.hpp:380
Definition: piecewise_connection_data.hpp:37
Definition: continuity.hpp:28
bool use_left_fpp() const
Definition: piecewise_connection_data.hpp:541
unsigned int conditions
Definition: piecewise_connection_data.hpp:637
bool check_state() const
Definition: piecewise_connection_data.hpp:560
data_type get_tmax() const
Definition: piecewise.hpp:333
void degrees(it__ itd)
Definition: piecewise.hpp:445
Definition: piecewise_connection_data.hpp:46
const curve_type & get_left_fpp() const
Definition: piecewise_connection_data.hpp:509
void get_fp(curve_type &fpl, curve_type &fpr) const
Definition: piecewise_connection_data.hpp:439
Definition: piecewise.hpp:281
Definition: piecewise_connection_data.hpp:40
bool unset_fpp()
Definition: piecewise_connection_data.hpp:523
bool set_right_fpp(const curve_type &fppr)
Definition: piecewise_connection_data.hpp:487
curve_type fp_right
Definition: piecewise_connection_data.hpp:635
curve_type::index_type index_type
Definition: piecewise.hpp:271
connection_continuity get_continuity() const
Definition: piecewise_connection_data.hpp:555
const connection_data & operator=(const connection_data &cd)
Definition: piecewise_connection_data.hpp:69
bool set_continuity(connection_continuity jc)
Definition: piecewise_connection_data.hpp:550
const curve_type & get_right_fp() const
Definition: piecewise_connection_data.hpp:435
bool use_right_fp() const
Definition: piecewise_connection_data.hpp:467
tol__ tolerance_type
Definition: piecewise_connection_data.hpp:52
Definition: piecewise_connection_data.hpp:48
const curve_type & get_right_fpp() const
Definition: piecewise_connection_data.hpp:513
curve_type::index_type index_type
Definition: piecewise_connection_data.hpp:54
bool set_left_fpp(const curve_type &fppl)
Definition: piecewise_connection_data.hpp:473
curve_type fpp_left
Definition: piecewise_connection_data.hpp:636
Definition: continuity.hpp:27
data_type get_tmax() const
Definition: piecewise_connection_data.hpp:128
bool use_right_fpp() const
Definition: piecewise_connection_data.hpp:545
Definition: piecewise_connection_data.hpp:41
bool unset_right_fpp()
Definition: piecewise_connection_data.hpp:534
Definition: piecewise_connection_data.hpp:32
connection_continuity continuity
Definition: piecewise_connection_data.hpp:638
connection_continuity
Definition: piecewise_connection_data.hpp:44
const curve_type & get_left_fp() const
Definition: piecewise_connection_data.hpp:431
void split(it1__ itb, it1__ ite, it2__ itd)
Definition: piecewise_connection_data.hpp:225
error_code
Definition: piecewise.hpp:279
connection_data()
Definition: piecewise_connection_data.hpp:57
data__ data_type
Definition: piecewise_connection_data.hpp:51
Definition: piecewise_connection_data.hpp:39
void get_joints(output_it__ it_in) const
Definition: piecewise_connection_data.hpp:135
bool operator==(const connection_data &cd) const
Definition: piecewise_connection_data.hpp:85
bool set_left_fp(const curve_type &fpl)
Definition: piecewise_connection_data.hpp:395
bool unset_f()
Definition: piecewise_connection_data.hpp:384
error_code degree_promote_to(const index_type °)
Definition: piecewise.hpp:758
bool set_fp(const curve_type &p)
Definition: piecewise_connection_data.hpp:423
Definition: piecewise_connection_data.hpp:38
curve_type fpp_right
Definition: piecewise_connection_data.hpp:636
bool use_left_fp() const
Definition: piecewise_connection_data.hpp:463
data_type get_t0() const
Definition: piecewise.hpp:335
bool use_f() const
Definition: piecewise_connection_data.hpp:389
bool promote(it__ itb, it__ ite)
Definition: piecewise_connection_data.hpp:317
~connection_data()
Definition: piecewise_connection_data.hpp:67
bool set_f(const curve_type &ff)
Definition: piecewise_connection_data.hpp:377
connection_data(const connection_data &cd)
Definition: piecewise_connection_data.hpp:61
curve_type f
Definition: piecewise_connection_data.hpp:634
Definition: piecewise_connection_data.hpp:47
error_code split(const data_type &t)
Definition: piecewise.hpp:1055
bool unset_left_fpp()
Definition: piecewise_connection_data.hpp:528
void get_fpp(curve_type &fppl, curve_type &fppr) const
Definition: piecewise_connection_data.hpp:517
bool unset_fp()
Definition: piecewise_connection_data.hpp:445
Definition: continuity.hpp:29
bool unset_left_fp()
Definition: piecewise_connection_data.hpp:450
eli::geom::curve::piecewise< eli::geom::curve::bezier, data__, dim__, tol__ > curve_type
Definition: piecewise_connection_data.hpp:53