13 #ifndef piecewise_circle_creator_test_suite_hpp
14 #define piecewise_circle_creator_test_suite_hpp
28 template<
typename data__>
91 std::cout <<
"figure(" << figno <<
");" << std::endl;
94 std::cout <<
"cp_x=[";
95 for (pp=0; pp<ns; ++pp)
99 for (i=0; i<=bez.degree(); ++i)
101 std::cout << bez.get_control_point(i).x();
107 std::cout << std::endl;
109 std::cout <<
"];" << std::endl;
111 std::cout <<
"cp_y=[";
112 for (pp=0; pp<ns; ++pp)
116 for (i=0; i<=bez.degree(); ++i)
118 std::cout << bez.get_control_point(i).y();
124 std::cout << std::endl;
126 std::cout <<
"];" << std::endl;
128 std::cout <<
"cp_z=[";
129 for (pp=0; pp<ns; ++pp)
133 for (i=0; i<=bez.degree(); ++i)
135 std::cout << bez.get_control_point(i).z();
141 std::cout << std::endl;
143 std::cout <<
"];" << std::endl;
146 std::vector<data__> t(129);
147 for (i=0; i<static_cast<index_type>(t.size()); ++i)
149 t[i]=tmin+(tmax-tmin)*static_cast<data__>(i)/(t.size()-1);
153 std::cout <<
"surf_x=[";
154 for (i=0; i<static_cast<index_type>(t.size()); ++i)
156 std::cout << pc.
f(t[i]).x();
157 if (i<static_cast<index_type>(t.size()-1))
160 std::cout <<
"];" << std::endl;
162 std::cout <<
"surf_y=[";
163 for (i=0; i<static_cast<index_type>(t.size()); ++i)
165 std::cout << pc.
f(t[i]).y();
166 if (i<static_cast<index_type>(t.size()-1))
169 std::cout <<
"];" << std::endl;
171 std::cout <<
"surf_z=[";
172 for (i=0; i<static_cast<index_type>(t.size()); ++i)
174 std::cout << pc.
f(t[i]).z();
175 if (i<static_cast<index_type>(t.size()-1))
178 std::cout <<
"];" << std::endl;
180 std::cout <<
"setenv('GNUTERM', 'x11');" << std::endl;
181 std::cout <<
"plot3(surf_x, surf_y, surf_z, '-k');" << std::endl;
182 std::cout <<
"hold on;" << std::endl;
183 std::cout <<
"plot3(cp_x', cp_y', cp_z', '-ok', 'MarkerFaceColor', [0 0 0]);" << std::endl;
184 std::cout <<
"hold off;" << std::endl;
190 circle_creator_type circle_creator;
191 piecewise_curve_type pc;
192 point_type origin, x, y;
201 circle_creator.
set(origin, x, y, radius);
204 TEST_ASSERT(circle_creator.
create(pc));
212 circle_creator_type circle_creator;
213 piecewise_curve_type pc;
214 point_type start, origin, normal;
220 circle_creator.
set(start, origin);
223 TEST_ASSERT(circle_creator.
create(pc));
228 circle_creator_type circle_creator;
229 piecewise_curve_type pc;
230 point_type start, origin, normal;
236 circle_creator.
set(start, origin);
239 TEST_ASSERT(circle_creator.
create(pc));
241 TEST_ASSERT(pc.
f(0.5)==pc.
f(1.75));
249 circle_creator_type circle_creator;
250 piecewise_curve_type pc;
251 point_type start, origin, normal;
258 circle_creator.
set(start, origin, normal);
261 TEST_ASSERT(circle_creator.
create(pc));
266 circle_creator_type circle_creator;
267 piecewise_curve_type pc;
268 point_type start, origin, normal;
275 circle_creator.
set(start, origin, normal);
278 TEST_ASSERT(circle_creator.
create(pc));
283 circle_creator_type circle_creator;
284 piecewise_curve_type pc;
285 point_type start, origin, normal;
292 circle_creator.
set(start, origin, normal);
295 TEST_ASSERT(circle_creator.
create(pc));
297 TEST_ASSERT(pc.
f(0.5)==pc.
f(1.75));
306 typedef typename piecewise_curve2_type::point_type point2_type;
309 point2_type origin(2, 4), start, middle, end, x, y, xref, yref;
310 data_type radius(2), alpha1(1), alpha2(3), alpha3(5);
311 piecewise_curve2_type pc;
312 circle_creator2_type circle_creator;
315 start << radius*std::cos(alpha1), radius*std::sin(alpha1);
316 middle << radius*std::cos(alpha2), radius*std::sin(alpha2);
317 end << radius*std::cos(alpha3), radius*std::sin(alpha3);
322 circle_creator.set_3pt(start, middle, end);
325 TEST_ASSERT(tol.approximately_equal(radius, circle_creator.get_radius()));
326 TEST_ASSERT(tol.approximately_equal(origin, circle_creator.get_origin()));
327 circle_creator.get_xy_directions(xref, yref);
331 TEST_ASSERT(tol.approximately_equal(x, xref));
332 TEST_ASSERT(tol.approximately_equal(y, yref));
335 TEST_ASSERT(circle_creator.create(pc));
340 point_type origin(2, 4, 1), start, middle, end, x, y, xref, yref;
341 data_type radius(2), alpha1(1), alpha2(3), alpha3(5);
342 piecewise_curve_type pc;
343 circle_creator_type circle_creator;
344 Eigen::Matrix<data_type, 3, 3> rotx, roty;
347 start << radius*std::cos(alpha1), radius*std::sin(alpha1), 0;
348 middle << radius*std::cos(alpha2), radius*std::sin(alpha2), 0;
349 end << radius*std::cos(alpha3), radius*std::sin(alpha3), 0;
351 0, std::cos(static_cast<data_type>(0.5)), -std::sin(static_cast<data_type>(0.5)),
352 0, std::sin(static_cast<data_type>(0.5)), std::cos(static_cast<data_type>(0.5));
353 roty << std::cos(static_cast<data_type>(0.25)), 0, std::sin(static_cast<data_type>(0.25)),
355 -std::sin(static_cast<data_type>(0.25)), 0, std::cos(static_cast<data_type>(0.25));
356 start=start*rotx*roty+origin;
357 middle=middle*rotx*roty+origin;
358 end=end*rotx*roty+origin;
360 circle_creator.
set_3pt(start, middle, end);
363 TEST_ASSERT(tol.approximately_equal(radius, circle_creator.
get_radius()));
364 TEST_ASSERT(tol.approximately_equal(origin, circle_creator.
get_origin()));
368 y << -radius*std::sin(alpha1), radius*std::cos(alpha1), 0;
371 TEST_ASSERT(tol.approximately_equal(x, xref));
372 TEST_ASSERT(tol.approximately_equal(y, yref));
375 TEST_ASSERT(circle_creator.
create(pc));
383 ellipse_creator_type ellipse_creator;
384 piecewise_curve_type pc;
385 point_type origin, x, y;
395 ellipse_creator.
set(origin, x, y, xr, yr);
398 TEST_ASSERT(ellipse_creator.
create(pc));
403 ellipse_creator_type ellipse_creator;
404 piecewise_curve_type pc;
405 point_type origin, x, y;
415 ellipse_creator.
set(origin, x, y, xr, yr);
418 TEST_ASSERT(ellipse_creator.
create(pc));
423 ellipse_creator_type ellipse_creator;
424 piecewise_curve_type pc;
425 point_type origin, x, y;
435 ellipse_creator.
set(origin, x, y, xr, yr);
438 TEST_ASSERT(ellipse_creator.
create(pc));
443 ellipse_creator_type ellipse_creator;
444 piecewise_curve_type pc;
445 point_type origin, x, y;
455 ellipse_creator.
set(origin, x, y, xr, yr);
458 TEST_ASSERT(ellipse_creator.
create(pc));
piecewise_circle_creator_test_suite()
Definition: piecewise_circle_creator_test_suite.hpp:73
tolerance_type tol
Definition: piecewise_circle_creator_test_suite.hpp:41
void create_ellipse_primative_test()
Definition: piecewise_circle_creator_test_suite.hpp:379
eli::geom::curve::piecewise< eli::geom::curve::bezier, data__, 3 > piecewise_curve_type
Definition: piecewise_circle_creator_test_suite.hpp:32
void create_circle_start_origin_normal_test()
Definition: piecewise_circle_creator_test_suite.hpp:245
tol__ tolerance_type
Definition: piecewise.hpp:278
data__ data_type
Definition: piecewise.hpp:276
void AddTests(const float &)
Definition: piecewise_circle_creator_test_suite.hpp:44
eli::geom::curve::piecewise_ellipse_creator< data__, 3, tolerance_type > ellipse_creator_type
Definition: piecewise_circle_creator_test_suite.hpp:39
Definition: piecewise_circle_creator.hpp:435
data_type get_parameter_min() const
Definition: piecewise.hpp:366
curve_type::index_type index_type
Definition: piecewise.hpp:271
piecewise_curve_type::point_type point_type
Definition: piecewise_circle_creator_test_suite.hpp:34
index_type number_segments() const
Definition: piecewise.hpp:419
point_type get_origin() const
Definition: piecewise_circle_creator.hpp:86
void create_circle_primative_test()
Definition: piecewise_circle_creator_test_suite.hpp:187
Definition: piecewise.hpp:244
piecewise_curve_type::data_type data_type
Definition: piecewise_circle_creator_test_suite.hpp:35
curve__< data__, dim__, tol__ > curve_type
Definition: piecewise.hpp:270
Definition: piecewise_circle_creator.hpp:244
void create_circle_3_point_test()
Definition: piecewise_circle_creator_test_suite.hpp:301
piecewise_curve_type::curve_type curve_type
Definition: piecewise_circle_creator_test_suite.hpp:33
void set_3pt(const point_type &start, const point_type &middle, const point_type &end)
Definition: piecewise_circle_creator.hpp:367
eli::geom::curve::piecewise_circle_creator< data__, 3, tolerance_type > circle_creator_type
Definition: piecewise_circle_creator_test_suite.hpp:38
~piecewise_circle_creator_test_suite()
Definition: piecewise_circle_creator_test_suite.hpp:77
virtual bool create(piecewise< bezier, data_type, dim__, tolerance_type > &pc) const
Definition: piecewise_circle_creator.hpp:110
data_type get_parameter_max() const
Definition: piecewise.hpp:374
piecewise_curve_type::index_type index_type
Definition: piecewise_circle_creator_test_suite.hpp:36
void create_circle_start_origin_test()
Definition: piecewise_circle_creator_test_suite.hpp:208
void get_xy_directions(point_type &xdir, point_type &ydir) const
Definition: piecewise_circle_creator.hpp:104
point_type f(const data_type &t) const
Definition: piecewise.hpp:1732
piecewise_curve_type::tolerance_type tolerance_type
Definition: piecewise_circle_creator_test_suite.hpp:37
error_code get(curve_type &curve, const index_type &index) const
Definition: piecewise.hpp:729
void set(const point_type &orig, const point_type &x, const point_type &y, const data_type &xr, const data_type &yr)
Definition: piecewise_circle_creator.hpp:493
Definition: piecewise_circle_creator_test_suite.hpp:29
void set(const point_type &orig, const point_type &x, const point_type &y, const data_type &r)
Definition: piecewise_circle_creator.hpp:283
curve_type::point_type point_type
Definition: piecewise.hpp:272
void AddTests(const double &)
Definition: piecewise_circle_creator_test_suite.hpp:53
void AddTests(const long double &)
Definition: piecewise_circle_creator_test_suite.hpp:62
data_type get_radius() const
Definition: piecewise_circle_creator.hpp:277
void octave_print(int figno, const piecewise_curve_type &pc) const
Definition: piecewise_circle_creator_test_suite.hpp:82