13 #ifndef eli_geom_surface_piecewise_body_of_revolution_creator_hpp
14 #define eli_geom_surface_piecewise_body_of_revolution_creator_hpp
19 #include "eli/code_eli.hpp"
35 template<
typename data__,
unsigned short dim__,
typename tol__>
38 int axis,
bool outward_normal)
43 typedef typename piecewise_curve_type::curve_type curve_type;
44 typedef typename piecewise_surface_type::surface_type surface_type;
45 typedef typename curve_type::point_type point_type;
46 typedef typename curve_type::data_type data_type;
47 typedef typename curve_type::index_type index_type;
51 piecewise_curve_type pc_circle;
52 point_type origin, normal, start;
89 circle_creator_type circle_creator;
90 for (pp=0; pp<nu; ++pp)
96 s[0].resize(udim, vdim);
97 s[1].resize(udim, vdim);
98 s[2].resize(udim, vdim);
99 s[3].resize(udim, vdim);
102 for (i=0; i<=udim; ++i)
105 start=c.get_control_point(i);
106 origin=normal.dot(start)*normal;
109 circle_creator.set(start, origin, normal);
110 if (!circle_creator.create(pc_circle))
117 for (qq=0; qq<4; ++qq)
119 pc_circle.get(arc, dv, qq);
122 s[qq].set_control_point(arc.get_control_point(j), i, j);
128 for (qq=0; qq<4; ++qq)
130 ps.
set(s[qq], pp, qq);
bool create_body_of_revolution(piecewise< bezier, data__, dim__, tol__ > &ps, const eli::geom::curve::piecewise< eli::geom::curve::bezier, data__, dim__, tol__ > &pc, int axis, bool outward_normal)
Definition: piecewise_body_of_revolution_creator.hpp:36
index_type number_segments() const
Definition: piecewise.hpp:419
Definition: piecewise.hpp:37
Definition: piecewise_circle_creator.hpp:244
void init_uv(const index_type &nsegu, const index_type &nsegv, const data_type &du=1, const data_type &dv=1, const data_type &u0=0, const data_type &v0=0)
Definition: piecewise.hpp:219
error_code get(curve_type &curve, const index_type &index) const
Definition: piecewise.hpp:729
error_code set(const surface_type &surf, const index_type &ui, const index_type &vi)
Definition: piecewise.hpp:509