13 #ifndef piecewise_general_skinning_surface_creator_test_suite_suite_hpp
14 #define piecewise_general_skinning_surface_creator_test_suite_suite_hpp
35 template<
typename data__>
97 rib_curve_type rc1, rc2, rc3;
98 point_type p1, p2, p3;
106 piecewise_line_creator_type plc(1);
126 TEST_ASSERT(!rtn_flag);
128 TEST_ASSERT(!rib.
use_f());
131 rtn_flag=rib.
set_f(rc1);
132 TEST_ASSERT(rtn_flag);
134 TEST_ASSERT(rib.
use_f());
138 TEST_ASSERT(!rtn_flag);
139 TEST_ASSERT(!rib.
use_f());
148 TEST_ASSERT(!rtn_flag);
150 TEST_ASSERT(!rib.
use_f());
156 TEST_ASSERT(!rtn_flag);
158 TEST_ASSERT(!rib.
use_f());
163 rtn_flag=rib.
set_f(rc1);
164 TEST_ASSERT(rtn_flag);
166 TEST_ASSERT(rib.
use_f());
172 TEST_ASSERT(rtn_flag);
174 TEST_ASSERT(rib.
use_f());
180 TEST_ASSERT(rtn_flag);
181 TEST_ASSERT(rib.
use_f());
187 TEST_ASSERT(rtn_flag);
188 TEST_ASSERT(rib.
use_f());
194 TEST_ASSERT(rtn_flag);
195 TEST_ASSERT(rib.
use_f());
201 TEST_ASSERT(rtn_flag);
204 TEST_ASSERT(rib.
use_f());
210 TEST_ASSERT(rtn_flag);
211 TEST_ASSERT(rib.
use_f());
222 TEST_ASSERT(!rtn_flag);
224 TEST_ASSERT(!rib.
use_f());
232 TEST_ASSERT(!rtn_flag);
234 TEST_ASSERT(!rib.
use_f());
242 TEST_ASSERT(!rtn_flag);
244 TEST_ASSERT(!rib.
use_f());
251 rtn_flag=rib.
set_f(rc1);
252 TEST_ASSERT(rtn_flag);
254 TEST_ASSERT(rib.
use_f());
262 TEST_ASSERT(rtn_flag);
263 TEST_ASSERT(rib.
use_f());
271 TEST_ASSERT(rtn_flag);
272 TEST_ASSERT(rib.
use_f());
280 TEST_ASSERT(rtn_flag);
281 TEST_ASSERT(rib.
use_f());
289 TEST_ASSERT(rtn_flag);
292 TEST_ASSERT(rib.
use_f());
300 TEST_ASSERT(rtn_flag);
303 TEST_ASSERT(rib.
use_f());
311 TEST_ASSERT(rtn_flag);
312 TEST_ASSERT(rib.
use_f());
320 TEST_ASSERT(rtn_flag);
321 TEST_ASSERT(rib.
use_f());
329 TEST_ASSERT(rtn_flag);
331 TEST_ASSERT(rtn_flag);
333 TEST_ASSERT(!rtn_flag);
336 rtn_flag=rib.
set_f(rc2);
337 TEST_ASSERT(rtn_flag);
339 TEST_ASSERT(rtn_flag);
341 TEST_ASSERT(rtn_flag);
342 TEST_ASSERT(rib.
use_f());
343 TEST_ASSERT(rib.
get_f()==rc2);
357 rtn_flag=rib.
set_f(rc1);
358 TEST_ASSERT(rtn_flag);
360 TEST_ASSERT(rib.
use_f());
368 TEST_ASSERT(rtn_flag);
370 TEST_ASSERT(rib.
use_f());
378 TEST_ASSERT(rtn_flag);
380 TEST_ASSERT(rib.
use_f());
388 TEST_ASSERT(!rtn_flag);
390 TEST_ASSERT(rtn_flag);
392 TEST_ASSERT(rib.
use_f());
400 TEST_ASSERT(rtn_flag);
402 TEST_ASSERT(rib.
use_f());
410 TEST_ASSERT(!rtn_flag);
412 TEST_ASSERT(rtn_flag);
414 TEST_ASSERT(rib.
use_f());
422 TEST_ASSERT(rtn_flag);
424 TEST_ASSERT(rib.
use_f());
432 TEST_ASSERT(rtn_flag);
434 TEST_ASSERT(rib.
use_f());
442 TEST_ASSERT(!rtn_flag);
444 TEST_ASSERT(rib.
use_f());
452 TEST_ASSERT(rtn_flag);
456 TEST_ASSERT(rib.
use_f());
464 TEST_ASSERT(rtn_flag);
466 TEST_ASSERT(rib.
use_f());
478 rtn_flag=rib.
set_f(rc1);
479 TEST_ASSERT(rtn_flag);
481 TEST_ASSERT(rtn_flag);
483 TEST_ASSERT(rtn_flag);
485 TEST_ASSERT(rib.
use_f());
493 TEST_ASSERT(rtn_flag);
495 TEST_ASSERT(rib.
use_f());
503 TEST_ASSERT(!rtn_flag);
505 TEST_ASSERT(rib.
use_f());
513 TEST_ASSERT(rtn_flag);
515 TEST_ASSERT(rib.
use_f());
523 TEST_ASSERT(rtn_flag);
525 TEST_ASSERT(rib.
use_f());
533 TEST_ASSERT(!rtn_flag);
535 TEST_ASSERT(rib.
use_f());
543 TEST_ASSERT(rtn_flag);
545 TEST_ASSERT(rib.
use_f());
553 TEST_ASSERT(rtn_flag);
555 TEST_ASSERT(rib.
use_f());
563 TEST_ASSERT(rtn_flag);
565 TEST_ASSERT(rib.
use_f());
574 rib_data_type r1, r2, r3;
603 rib_data_type r4(r3);
610 data_type s1, s2, s3, s4, s5;
612 s1=
static_cast<data_type
>(0.25);
613 s2=
static_cast<data_type
>(0.35);
614 s3=
static_cast<data_type
>(0.45);
615 s4=
static_cast<data_type
>(0.55);
616 s5=
static_cast<data_type
>(0.70);
630 std::vector<data_type> rjoints;
633 TEST_ASSERT(rjoints.size()==7);
634 if (rjoints.size()==7)
636 TEST_ASSERT(tol.approximately_equal(rc1.
get_t0(), rjoints[0]));
637 TEST_ASSERT(tol.approximately_equal(s1, rjoints[1]));
638 TEST_ASSERT(tol.approximately_equal(s2, rjoints[2]));
639 TEST_ASSERT(tol.approximately_equal(s3, rjoints[3]));
640 TEST_ASSERT(tol.approximately_equal(s4, rjoints[4]));
641 TEST_ASSERT(tol.approximately_equal(s5, rjoints[5]));
642 TEST_ASSERT(tol.approximately_equal(rc1.
get_tmax(), rjoints[6]));
646 std::vector<index_type> r1degs;
647 r1.
split(rjoints.begin(), rjoints.end(), std::back_inserter(r1degs));
650 TEST_ASSERT(r1degs.size()==6);
651 if (r1degs.size()==6)
653 TEST_ASSERT(r1degs[0]==1);
654 TEST_ASSERT(r1degs[1]==1);
655 TEST_ASSERT(r1degs[2]==1);
656 TEST_ASSERT(r1degs[3]==1);
657 TEST_ASSERT(r1degs[4]==1);
658 TEST_ASSERT(r1degs[5]==1);
664 TEST_ASSERT(rjoints.size()==7);
665 if (rjoints.size()==7)
667 TEST_ASSERT(tol.approximately_equal(rc1.
get_t0(), rjoints[0]));
668 TEST_ASSERT(tol.approximately_equal(s1, rjoints[1]));
669 TEST_ASSERT(tol.approximately_equal(s2, rjoints[2]));
670 TEST_ASSERT(tol.approximately_equal(s3, rjoints[3]));
671 TEST_ASSERT(tol.approximately_equal(s4, rjoints[4]));
672 TEST_ASSERT(tol.approximately_equal(s5, rjoints[5]));
673 TEST_ASSERT(tol.approximately_equal(rc1.
get_tmax(), rjoints[6]));
677 TEST_ASSERT(rjoints.size()==7);
678 if (rjoints.size()==7)
680 TEST_ASSERT(tol.approximately_equal(rc1.
get_t0(), rjoints[0]));
681 TEST_ASSERT(tol.approximately_equal(s1, rjoints[1]));
682 TEST_ASSERT(tol.approximately_equal(s2, rjoints[2]));
683 TEST_ASSERT(tol.approximately_equal(s3, rjoints[3]));
684 TEST_ASSERT(tol.approximately_equal(s4, rjoints[4]));
685 TEST_ASSERT(tol.approximately_equal(s5, rjoints[5]));
686 TEST_ASSERT(tol.approximately_equal(rc1.
get_tmax(), rjoints[6]));
690 TEST_ASSERT(rjoints.size()==7);
691 if (rjoints.size()==7)
693 TEST_ASSERT(tol.approximately_equal(rc1.
get_t0(), rjoints[0]));
694 TEST_ASSERT(tol.approximately_equal(s1, rjoints[1]));
695 TEST_ASSERT(tol.approximately_equal(s2, rjoints[2]));
696 TEST_ASSERT(tol.approximately_equal(s3, rjoints[3]));
697 TEST_ASSERT(tol.approximately_equal(s4, rjoints[4]));
698 TEST_ASSERT(tol.approximately_equal(s5, rjoints[5]));
699 TEST_ASSERT(tol.approximately_equal(rc1.
get_tmax(), rjoints[6]));
703 TEST_ASSERT(rjoints.size()==7);
704 if (rjoints.size()==7)
706 TEST_ASSERT(tol.approximately_equal(rc1.
get_t0(), rjoints[0]));
707 TEST_ASSERT(tol.approximately_equal(s1, rjoints[1]));
708 TEST_ASSERT(tol.approximately_equal(s2, rjoints[2]));
709 TEST_ASSERT(tol.approximately_equal(s3, rjoints[3]));
710 TEST_ASSERT(tol.approximately_equal(s4, rjoints[4]));
711 TEST_ASSERT(tol.approximately_equal(s5, rjoints[5]));
712 TEST_ASSERT(tol.approximately_equal(rc1.
get_tmax(), rjoints[6]));
716 TEST_ASSERT(rjoints.size()==7);
717 if (rjoints.size()==7)
719 TEST_ASSERT(tol.approximately_equal(rc1.
get_t0(), rjoints[0]));
720 TEST_ASSERT(tol.approximately_equal(s1, rjoints[1]));
721 TEST_ASSERT(tol.approximately_equal(s2, rjoints[2]));
722 TEST_ASSERT(tol.approximately_equal(s3, rjoints[3]));
723 TEST_ASSERT(tol.approximately_equal(s4, rjoints[4]));
724 TEST_ASSERT(tol.approximately_equal(s5, rjoints[5]));
725 TEST_ASSERT(tol.approximately_equal(rc1.
get_tmax(), rjoints[6]));
735 std::vector<rib_data_type> ribs(nsegs+1);
736 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
738 rib_curve_type rc1, rc2;
739 general_creator_type gc;
740 piecewise_surface_type s;
741 point_type p00, p01, p10, p11;
742 data_type u0(2), v0(1), u1(4), v1(5), v;
752 piecewise_line_creator_type plc(1);
775 TEST_ASSERT(rtn_flag);
779 TEST_ASSERT(rtn_flag);
782 point_type p_test, p_ref;
785 TEST_ASSERT(tol.approximately_equal(p00, p_test));
791 TEST_ASSERT(tol.approximately_equal(p10, p_test));
797 TEST_ASSERT(tol.approximately_equal(p01, p_test));
803 TEST_ASSERT(tol.approximately_equal(p11, p_test));
810 p_ref=ribs[0].get_f().f(v);
811 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
816 p_ref=ribs[1].get_f().f(v);
817 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
836 std::vector<rib_data_type> ribs(nsegs+1);
837 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
839 rib_curve_type rc1, rc2, rs1, rs2;
840 general_creator_type gc;
841 piecewise_surface_type s;
842 point_type p00, p01, p10, p11, s00, s01, s10, s11;
843 data_type u0(2), v0(1), u1(4), v1(5), v;
857 piecewise_line_creator_type plc(1);
885 ribs[0].set_right_fp(rs1);
887 ribs[1].set_left_fp(rs2);
894 TEST_ASSERT(rtn_flag);
898 TEST_ASSERT(rtn_flag);
901 point_type p_test, p_ref;
904 TEST_ASSERT(tol.approximately_equal(p00, p_test));
910 TEST_ASSERT(tol.approximately_equal(p10, p_test));
916 TEST_ASSERT(tol.approximately_equal(p01, p_test));
922 TEST_ASSERT(tol.approximately_equal(p11, p_test));
929 p_ref=ribs[0].get_f().f(v);
930 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
935 p_ref=ribs[1].get_f().f(v);
936 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
941 p_ref=ribs[0].get_right_fp().f(v);
942 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
947 p_ref=ribs[1].get_left_fp().f(v);
948 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
969 std::vector<rib_data_type> ribs(nsegs+1);
970 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
972 rib_curve_type rc1, rc2, rs1, rs2, ra1, ra2;
973 general_creator_type gc;
974 piecewise_surface_type s;
975 point_type p00, p01, p10, p11, s00, s01, s10, s11, a00, a01, a10, a11;
976 data_type u0(2), v0(1), u1(4), v1(5), v;
994 piecewise_line_creator_type plc(1);
1034 ribs[0].set_right_fp(rs1);
1035 ribs[0].set_right_fpp(ra1);
1037 ribs[1].set_left_fp(rs2);
1038 ribs[1].set_left_fpp(ra2);
1045 TEST_ASSERT(rtn_flag);
1049 TEST_ASSERT(rtn_flag);
1052 point_type p_test, p_ref;
1055 TEST_ASSERT(tol.approximately_equal(p00, p_test));
1061 TEST_ASSERT(tol.approximately_equal(p10, p_test));
1067 TEST_ASSERT(tol.approximately_equal(p01, p_test));
1073 TEST_ASSERT(tol.approximately_equal(p11, p_test));
1080 p_ref=ribs[0].get_f().f(v);
1081 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1086 p_ref=ribs[1].get_f().f(v);
1087 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1091 p_test=s.
f_u(u0, v);
1092 p_ref=ribs[0].get_right_fp().f(v);
1093 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1097 p_test=s.
f_uu(u0, v);
1098 p_ref=ribs[0].get_right_fpp().f(v);
1099 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1103 p_test=s.
f_u(u1, v);
1104 p_ref=ribs[1].get_left_fp().f(v);
1105 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1109 p_test=s.
f_uu(u1, v);
1110 p_ref=ribs[1].get_left_fpp().f(v);
1111 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1131 index_type nsegs(1);
1132 std::vector<rib_data_type> ribs(nsegs+1);
1133 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
1135 rib_curve_type rc1, rc2, rs1, rs2, ra1, ra2;
1136 general_creator_type gc;
1137 piecewise_surface_type s;
1138 point_type p00, p01, p10, p11, s00, s01, s10, s11, a00, a01, a10, a11;
1139 data_type u0(2), v0(1), u1(4), v1(5), v;
1165 for (index_type i=0; i<4; ++i)
1176 for (index_type i=0; i<4; ++i)
1184 piecewise_line_creator_type plc(1);
1212 ribs[0].set_right_fp(rs1);
1213 ribs[0].set_right_fpp(ra1);
1215 ribs[1].set_left_fp(rs2);
1216 ribs[1].set_left_fpp(ra2);
1223 TEST_ASSERT(rtn_flag);
1227 TEST_ASSERT(rtn_flag);
1230 point_type p_test, p_ref;
1233 TEST_ASSERT(tol.approximately_equal(p00, p_test));
1239 TEST_ASSERT(tol.approximately_equal(p10, p_test));
1245 TEST_ASSERT(tol.approximately_equal(p01, p_test));
1251 TEST_ASSERT(tol.approximately_equal(p11, p_test));
1258 p_ref=ribs[0].get_f().f(v);
1259 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1264 p_ref=ribs[1].get_f().f(v);
1265 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1269 p_test=s.
f_u(u0, v);
1270 p_ref=ribs[0].get_right_fp().f(v);
1271 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1275 p_test=s.
f_uu(u0, v);
1276 p_ref=ribs[0].get_right_fpp().f(v);
1277 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1281 p_test=s.
f_u(u1, v);
1282 p_ref=ribs[1].get_left_fp().f(v);
1283 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1287 p_test=s.
f_uu(u1, v);
1288 p_ref=ribs[1].get_left_fpp().f(v);
1289 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1309 index_type nsegs(1);
1310 std::vector<rib_data_type> ribs(nsegs+1);
1311 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
1313 rib_curve_type rc1, rc2, rs1, rs2, ra1, ra2;
1314 general_creator_type gc;
1315 piecewise_surface_type s;
1316 point_type p00, p01, p10, p11, s00, s01, s10, s11, a00, a01, a10, a11;
1317 data_type u0(2), v0(1), u1(4), v1(5), v;
1343 for (index_type i=0; i<4; ++i)
1351 piecewise_line_creator_type plc(1);
1385 ribs[0].set_right_fp(rs1);
1386 ribs[0].set_right_fpp(ra1);
1388 ribs[1].set_left_fp(rs2);
1389 ribs[1].set_left_fpp(ra2);
1396 TEST_ASSERT(rtn_flag);
1400 TEST_ASSERT(rtn_flag);
1403 point_type p_test, p_ref;
1406 TEST_ASSERT(tol.approximately_equal(p00, p_test));
1412 TEST_ASSERT(tol.approximately_equal(p10, p_test));
1418 TEST_ASSERT(tol.approximately_equal(p01, p_test));
1424 TEST_ASSERT(tol.approximately_equal(p11, p_test));
1431 p_ref=ribs[0].get_f().f(v);
1432 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1437 p_ref=ribs[1].get_f().f(v);
1438 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1442 p_test=s.
f_u(u0, v);
1443 p_ref=ribs[0].get_right_fp().f(v);
1444 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1448 p_test=s.
f_uu(u0, v);
1449 p_ref=ribs[0].get_right_fpp().f(v);
1450 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1454 p_test=s.
f_u(u1, v);
1455 p_ref=ribs[1].get_left_fp().f(v);
1456 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1460 p_test=s.
f_uu(u1, v);
1461 p_ref=ribs[1].get_left_fpp().f(v);
1462 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1485 index_type nsegs(1);
1486 std::vector<rib_data_type> ribs(nsegs+1);
1487 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
1489 rib_curve_type rc1, rc2;
1490 general_creator_type gc;
1491 piecewise_surface_type s;
1492 point_type p00, p01, p10, p11;
1493 data_type u0(2), v0(1), u1(4), v1(5), v;
1503 piecewise_line_creator_type plc(1);
1510 rc1.
split((v0+v1)/2);
1517 rc2.
split((v0+v1)/2);
1528 TEST_ASSERT(rtn_flag);
1532 TEST_ASSERT(rtn_flag);
1535 point_type p_test, p_ref;
1538 TEST_ASSERT(tol.approximately_equal(p00, p_test));
1544 TEST_ASSERT(tol.approximately_equal(p10, p_test));
1550 TEST_ASSERT(tol.approximately_equal(p01, p_test));
1556 TEST_ASSERT(tol.approximately_equal(p11, p_test));
1563 p_ref=ribs[0].get_f().f(v);
1564 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1569 p_ref=ribs[1].get_f().f(v);
1570 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1576 p_ref=ribs[0].get_f().f(v);
1577 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1582 p_ref=ribs[1].get_f().f(v);
1583 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1601 index_type nsegs(1);
1602 std::vector<rib_data_type> ribs(nsegs+1);
1603 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
1605 rib_curve_type rc1, rc2;
1606 general_creator_type gc;
1607 piecewise_surface_type s;
1608 point_type p00, p01, p10, p11;
1609 data_type u0(2), v0(1), u1(4), v1(5), v;
1627 for (index_type i=0; i<4; ++i)
1633 rc1.
split((v0+v1)/2);
1639 for (index_type i=0; i<4; ++i)
1645 rc2.
split((v0+v1)/2);
1656 TEST_ASSERT(rtn_flag);
1660 TEST_ASSERT(rtn_flag);
1663 point_type p_test, p_ref;
1666 TEST_ASSERT(tol.approximately_equal(p00, p_test));
1672 TEST_ASSERT(tol.approximately_equal(p10, p_test));
1678 TEST_ASSERT(tol.approximately_equal(p01, p_test));
1684 TEST_ASSERT(tol.approximately_equal(p11, p_test));
1691 p_ref=ribs[0].get_f().f(v);
1692 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1697 p_ref=ribs[1].get_f().f(v);
1698 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1704 p_ref=ribs[0].get_f().f(v);
1705 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1710 p_ref=ribs[1].get_f().f(v);
1711 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1729 index_type nsegs(1);
1730 std::vector<rib_data_type> ribs(nsegs+1);
1731 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
1733 rib_curve_type rc1, rc2, rs1, rs2;
1734 general_creator_type gc;
1735 piecewise_surface_type s;
1736 point_type p00, p01, p10, p11, s00, s01, s10, s11;
1737 data_type u0(2), v0(1), u1(4), v1(5), v;
1759 for (index_type i=0; i<4; ++i)
1765 rc1.
split((v0+v1)/2);
1771 for (index_type i=0; i<4; ++i)
1777 rc2.
split((v0+v1)/2);
1780 piecewise_line_creator_type plc(1);
1796 ribs[0].set_right_fp(rs1);
1798 ribs[1].set_left_fp(rs2);
1805 TEST_ASSERT(rtn_flag);
1809 TEST_ASSERT(rtn_flag);
1812 point_type p_test, p_ref;
1815 TEST_ASSERT(tol.approximately_equal(p00, p_test));
1821 TEST_ASSERT(tol.approximately_equal(p10, p_test));
1827 TEST_ASSERT(tol.approximately_equal(p01, p_test));
1833 TEST_ASSERT(tol.approximately_equal(p11, p_test));
1840 p_ref=ribs[0].get_f().f(v);
1841 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1846 p_ref=ribs[1].get_f().f(v);
1847 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1851 p_test=s.
f_u(u0, v);
1852 p_ref=ribs[0].get_right_fp().f(v);
1853 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1857 p_test=s.
f_u(u1, v);
1858 p_ref=ribs[1].get_left_fp().f(v);
1859 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1865 p_ref=ribs[0].get_f().f(v);
1866 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1871 p_ref=ribs[1].get_f().f(v);
1872 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1876 p_test=s.
f_u(u0, v);
1877 p_ref=ribs[0].get_right_fp().f(v);
1878 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1882 p_test=s.
f_u(u1, v);
1883 p_ref=ribs[1].get_left_fp().f(v);
1884 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
1904 index_type nsegs(1);
1905 std::vector<rib_data_type> ribs(nsegs+1);
1906 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
1908 rib_curve_type rc1, rc2, rs1, rs2, ra1, ra2;
1909 general_creator_type gc;
1910 piecewise_surface_type s;
1911 point_type p00, p01, p10, p11, s00, s01, s10, s11, a00, a01, a10, a11;
1912 data_type u0(2), v0(1), u1(4), v1(5), v;
1938 for (index_type i=0; i<4; ++i)
1944 rc1.
split((v0+v1)/2);
1950 for (index_type i=0; i<4; ++i)
1956 rc2.
split((v0+v1)/2);
1959 piecewise_line_creator_type plc(1);
1987 ribs[0].set_right_fp(rs1);
1988 ribs[0].set_right_fpp(ra1);
1990 ribs[1].set_left_fp(rs2);
1991 ribs[1].set_left_fpp(ra2);
1998 TEST_ASSERT(rtn_flag);
2002 TEST_ASSERT(rtn_flag);
2005 point_type p_test, p_ref;
2008 TEST_ASSERT(tol.approximately_equal(p00, p_test));
2014 TEST_ASSERT(tol.approximately_equal(p10, p_test));
2020 TEST_ASSERT(tol.approximately_equal(p01, p_test));
2026 TEST_ASSERT(tol.approximately_equal(p11, p_test));
2033 p_ref=ribs[0].get_f().f(v);
2034 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2039 p_ref=ribs[1].get_f().f(v);
2040 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2044 p_test=s.
f_u(u0, v);
2045 p_ref=ribs[0].get_right_fp().f(v);
2046 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2050 p_test=s.
f_u(u1, v);
2051 p_ref=ribs[1].get_left_fp().f(v);
2052 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2056 p_test=s.
f_uu(u0, v);
2057 p_ref=ribs[0].get_right_fpp().f(v);
2058 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2062 p_test=s.
f_uu(u1, v);
2063 p_ref=ribs[1].get_left_fpp().f(v);
2064 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2070 p_ref=ribs[0].get_f().f(v);
2071 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2076 p_ref=ribs[1].get_f().f(v);
2077 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2081 p_test=s.
f_u(u0, v);
2082 p_ref=ribs[0].get_right_fp().f(v);
2083 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2087 p_test=s.
f_u(u1, v);
2088 p_ref=ribs[1].get_left_fp().f(v);
2089 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2093 p_test=s.
f_uu(u0, v);
2094 p_ref=ribs[0].get_right_fpp().f(v);
2095 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2099 p_test=s.
f_uu(u1, v);
2100 p_ref=ribs[1].get_left_fpp().f(v);
2101 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2121 index_type nsegs(1);
2122 std::vector<rib_data_type> ribs(nsegs+1);
2123 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
2125 rib_curve_type rc1, rc2, rs1, rs2, ra1, ra2;
2126 general_creator_type gc;
2127 piecewise_surface_type s;
2128 point_type p00, p01, p10, p11, s00, s01, s10, s11, a00, a01, a10, a11;
2129 data_type u0(2), v0(1), u1(4), v1(5), v;
2155 for (index_type i=0; i<4; ++i)
2161 rc1.
split((v0+v1)/2);
2167 for (index_type i=0; i<4; ++i)
2175 piecewise_line_creator_type plc(1);
2203 ribs[0].set_right_fp(rs1);
2204 ribs[0].set_right_fpp(ra1);
2206 ribs[1].set_left_fp(rs2);
2207 ribs[1].set_left_fpp(ra2);
2214 TEST_ASSERT(rtn_flag);
2218 TEST_ASSERT(rtn_flag);
2221 point_type p_test, p_ref;
2224 TEST_ASSERT(tol.approximately_equal(p00, p_test));
2230 TEST_ASSERT(tol.approximately_equal(p10, p_test));
2236 TEST_ASSERT(tol.approximately_equal(p01, p_test));
2242 TEST_ASSERT(tol.approximately_equal(p11, p_test));
2249 p_ref=ribs[0].get_f().f(v);
2250 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2255 p_ref=ribs[1].get_f().f(v);
2256 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2260 p_test=s.
f_u(u0, v);
2261 p_ref=ribs[0].get_right_fp().f(v);
2262 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2266 p_test=s.
f_u(u1, v);
2267 p_ref=ribs[1].get_left_fp().f(v);
2268 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2272 p_test=s.
f_uu(u0, v);
2273 p_ref=ribs[0].get_right_fpp().f(v);
2274 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2278 p_test=s.
f_uu(u1, v);
2279 p_ref=ribs[1].get_left_fpp().f(v);
2280 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2286 p_ref=ribs[0].get_f().f(v);
2287 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2292 p_ref=ribs[1].get_f().f(v);
2293 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2297 p_test=s.
f_u(u0, v);
2298 p_ref=ribs[0].get_right_fp().f(v);
2299 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2303 p_test=s.
f_u(u1, v);
2304 p_ref=ribs[1].get_left_fp().f(v);
2305 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2309 p_test=s.
f_uu(u0, v);
2310 p_ref=ribs[0].get_right_fpp().f(v);
2311 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2315 p_test=s.
f_uu(u1, v);
2316 p_ref=ribs[1].get_left_fpp().f(v);
2317 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2337 index_type nsegs(1);
2338 std::vector<rib_data_type> ribs(nsegs+1);
2339 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
2341 rib_curve_type rc1, rc2, rs1, rs2, ra1, ra2;
2342 general_creator_type gc;
2343 piecewise_surface_type s;
2344 point_type p00, p01, p10, p11, s00, s01, s10, s11, a00, a01, a10, a11;
2345 data_type u0(2), v0(1), u1(4), v1(5), v;
2371 for (index_type i=0; i<4; ++i)
2377 rc1.
split(v0+(v1-v0)/4);
2383 for (index_type i=0; i<4; ++i)
2389 rc2.
split(v0+3*(v1-v0)/4);
2392 piecewise_line_creator_type plc(1);
2420 ribs[0].set_right_fp(rs1);
2421 ribs[0].set_right_fpp(ra1);
2423 ribs[1].set_left_fp(rs2);
2424 ribs[1].set_left_fpp(ra2);
2431 TEST_ASSERT(rtn_flag);
2435 TEST_ASSERT(rtn_flag);
2438 point_type p_test, p_ref;
2441 TEST_ASSERT(tol.approximately_equal(p00, p_test));
2447 TEST_ASSERT(tol.approximately_equal(p10, p_test));
2453 TEST_ASSERT(tol.approximately_equal(p01, p_test));
2459 TEST_ASSERT(tol.approximately_equal(p11, p_test));
2466 p_ref=ribs[0].get_f().f(v);
2467 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2472 p_ref=ribs[1].get_f().f(v);
2473 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2477 p_test=s.
f_u(u0, v);
2478 p_ref=ribs[0].get_right_fp().f(v);
2479 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2483 p_test=s.
f_u(u1, v);
2484 p_ref=ribs[1].get_left_fp().f(v);
2485 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2489 p_test=s.
f_uu(u0, v);
2490 p_ref=ribs[0].get_right_fpp().f(v);
2491 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2495 p_test=s.
f_uu(u1, v);
2496 p_ref=ribs[1].get_left_fpp().f(v);
2497 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2503 p_ref=ribs[0].get_f().f(v);
2504 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2509 p_ref=ribs[1].get_f().f(v);
2510 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2514 p_test=s.
f_u(u0, v);
2515 p_ref=ribs[0].get_right_fp().f(v);
2516 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2520 p_test=s.
f_u(u1, v);
2521 p_ref=ribs[1].get_left_fp().f(v);
2522 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2526 p_test=s.
f_uu(u0, v);
2527 p_ref=ribs[0].get_right_fpp().f(v);
2528 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2532 p_test=s.
f_uu(u1, v);
2533 p_ref=ribs[1].get_left_fpp().f(v);
2534 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2557 index_type nsegs(2);
2558 std::vector<rib_data_type> ribs(nsegs+1);
2559 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
2561 rib_curve_type rc1, rc2, rc3;
2562 general_creator_type gc;
2563 piecewise_surface_type s;
2564 point_type p00, p01, p10, p11, p20, p21;
2565 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
2577 piecewise_line_creator_type plc(1);
2608 TEST_ASSERT(rtn_flag);
2613 TEST_ASSERT(rtn_flag);
2616 point_type p_test, p_ref;
2619 TEST_ASSERT(tol.approximately_equal(p00, p_test));
2625 TEST_ASSERT(tol.approximately_equal(p10, p_test));
2631 TEST_ASSERT(tol.approximately_equal(p20, p_test));
2637 TEST_ASSERT(tol.approximately_equal(p01, p_test));
2643 TEST_ASSERT(tol.approximately_equal(p11, p_test));
2649 TEST_ASSERT(tol.approximately_equal(p21, p_test));
2656 p_ref=ribs[0].get_f().f(v);
2657 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2662 p_ref=ribs[1].get_f().f(v);
2663 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2668 p_ref=ribs[2].get_f().f(v);
2669 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2688 index_type nsegs(2);
2689 std::vector<rib_data_type> ribs(nsegs+1);
2690 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
2692 rib_curve_type rc1, rc2, rc3;
2693 general_creator_type gc;
2694 piecewise_surface_type s;
2695 point_type p00, p01, p10, p11, p20, p21;
2696 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
2716 for (index_type i=0; i<4; ++i)
2722 rc1.
split((v0+v1)/2);
2728 for (index_type i=0; i<4; ++i)
2734 rc2.
split((v0+v1)/2);
2740 for (index_type i=0; i<4; ++i)
2746 rc3.
split((v0+v1)/2);
2759 TEST_ASSERT(rtn_flag);
2764 TEST_ASSERT(rtn_flag);
2767 point_type p_test, p_ref;
2770 TEST_ASSERT(tol.approximately_equal(p00, p_test));
2776 TEST_ASSERT(tol.approximately_equal(p10, p_test));
2782 TEST_ASSERT(tol.approximately_equal(p20, p_test));
2788 TEST_ASSERT(tol.approximately_equal(p01, p_test));
2794 TEST_ASSERT(tol.approximately_equal(p11, p_test));
2800 TEST_ASSERT(tol.approximately_equal(p21, p_test));
2807 p_ref=ribs[0].get_f().f(v);
2808 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2813 p_ref=ribs[1].get_f().f(v);
2814 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2819 p_ref=ribs[2].get_f().f(v);
2820 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2826 p_ref=ribs[0].get_f().f(v);
2827 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2832 p_ref=ribs[1].get_f().f(v);
2833 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2838 p_ref=ribs[2].get_f().f(v);
2839 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
2858 index_type nsegs(2);
2859 std::vector<rib_data_type> ribs(nsegs+1);
2860 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
2862 rib_curve_type rc1, rc2, rc3, rs1, rs2, rs3;
2863 general_creator_type gc;
2864 piecewise_surface_type s;
2865 point_type p00, p01, p10, p11, p20, p21, s00, s01, s10, s11, s20, s21;
2866 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
2892 for (index_type i=0; i<4; ++i)
2898 rc1.
split((v0+v1)/2);
2904 for (index_type i=0; i<4; ++i)
2910 rc2.
split((v0+v1)/2);
2916 for (index_type i=0; i<4; ++i)
2922 rc3.
split((v0+v1)/2);
2925 piecewise_line_creator_type plc(1);
2947 ribs[0].set_right_fp(rs1);
2949 ribs[1].set_fp(rs2);
2951 ribs[2].set_left_fp(rs3);
2959 TEST_ASSERT(rtn_flag);
2964 TEST_ASSERT(rtn_flag);
2967 point_type p_test, p_ref;
2970 TEST_ASSERT(tol.approximately_equal(p00, p_test));
2976 TEST_ASSERT(tol.approximately_equal(p10, p_test));
2982 TEST_ASSERT(tol.approximately_equal(p20, p_test));
2988 TEST_ASSERT(tol.approximately_equal(p01, p_test));
2994 TEST_ASSERT(tol.approximately_equal(p11, p_test));
3000 TEST_ASSERT(tol.approximately_equal(p21, p_test));
3007 p_ref=ribs[0].get_f().f(v);
3008 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3013 p_ref=ribs[1].get_f().f(v);
3014 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3019 p_ref=ribs[2].get_f().f(v);
3020 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3024 p_test=s.
f_u(u0, v);
3025 p_ref=ribs[0].get_right_fp().f(v);
3026 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3030 p_test=s.
f_u(u1, v);
3031 p_ref=ribs[1].get_left_fp().f(v);
3032 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3036 p_test=s.
f_u(u2, v);
3037 p_ref=ribs[2].get_left_fp().f(v);
3038 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3044 p_ref=ribs[0].get_f().f(v);
3045 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3050 p_ref=ribs[1].get_f().f(v);
3051 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3056 p_ref=ribs[2].get_f().f(v);
3057 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3061 p_test=s.
f_u(u0, v);
3062 p_ref=ribs[0].get_right_fp().f(v);
3063 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3067 p_test=s.
f_u(u1, v);
3068 p_ref=ribs[1].get_left_fp().f(v);
3069 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3073 p_test=s.
f_u(u2, v);
3074 p_ref=ribs[2].get_left_fp().f(v);
3075 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3098 index_type nsegs(2);
3099 std::vector<rib_data_type> ribs(nsegs+1);
3100 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
3102 rib_curve_type rc1, rc2, rc3, rs1, rs2l, rs2r, rs3;
3103 general_creator_type gc;
3104 piecewise_surface_type s;
3105 point_type p00, p01, p10, p11, p20, p21, s00, s01, sl10, sl11, sr10, sr11, s20, s21;
3106 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
3134 for (index_type i=0; i<4; ++i)
3140 rc1.
split((v0+v1)/2);
3146 for (index_type i=0; i<4; ++i)
3152 rc2.
split((v0+v1)/2);
3158 for (index_type i=0; i<4; ++i)
3164 rc3.
split((v0+v1)/2);
3167 piecewise_line_creator_type plc(1);
3195 ribs[0].set_right_fp(rs1);
3197 ribs[1].set_left_fp(rs2l);
3198 ribs[1].set_right_fp(rs2r);
3200 ribs[2].set_left_fp(rs3);
3208 TEST_ASSERT(rtn_flag);
3213 TEST_ASSERT(rtn_flag);
3216 point_type p_test, p_ref;
3217 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
3220 TEST_ASSERT(tol.approximately_equal(p00, p_test));
3226 TEST_ASSERT(tol.approximately_equal(p10, p_test));
3232 TEST_ASSERT(tol.approximately_equal(p20, p_test));
3238 TEST_ASSERT(tol.approximately_equal(p01, p_test));
3244 TEST_ASSERT(tol.approximately_equal(p11, p_test));
3250 TEST_ASSERT(tol.approximately_equal(p21, p_test));
3257 p_ref=ribs[0].get_f().f(v);
3258 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3263 p_ref=ribs[1].get_f().f(v);
3264 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3269 p_ref=ribs[2].get_f().f(v);
3270 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3274 p_test=s.
f_u(u0, v);
3275 p_ref=ribs[0].get_right_fp().f(v);
3276 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3280 p_test=s.
f_u(u1-small_num, v);
3281 p_ref=ribs[1].get_left_fp().f(v);
3282 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3286 p_test=s.
f_u(u1+small_num, v);
3287 p_ref=ribs[1].get_right_fp().f(v);
3288 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3292 p_test=s.
f_u(u2, v);
3293 p_ref=ribs[2].get_left_fp().f(v);
3294 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3300 p_ref=ribs[0].get_f().f(v);
3301 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3306 p_ref=ribs[1].get_f().f(v);
3307 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3312 p_ref=ribs[2].get_f().f(v);
3313 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3317 p_test=s.
f_u(u0, v);
3318 p_ref=ribs[0].get_right_fp().f(v);
3319 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3323 p_test=s.
f_u(u1-small_num, v);
3324 p_ref=ribs[1].get_left_fp().f(v);
3325 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3329 p_test=s.
f_u(u1+small_num, v);
3330 p_ref=ribs[1].get_right_fp().f(v);
3331 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3335 p_test=s.
f_u(u2, v);
3336 p_ref=ribs[2].get_left_fp().f(v);
3337 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3360 index_type nsegs(2);
3361 std::vector<rib_data_type> ribs(nsegs+1);
3362 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
3364 rib_curve_type rc1, rc2, rc3, rs1, rs2, rs3, ra1, ra2, ra3;
3365 general_creator_type gc;
3366 piecewise_surface_type s;
3367 point_type p00, p01, p10, p11, p20, p21, s00, s01, s10, s11, s20, s21, a00, a01, a10, a11, a20, a21;
3368 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
3400 for (index_type i=0; i<4; ++i)
3406 rc1.
split((v0+v1)/2);
3412 for (index_type i=0; i<4; ++i)
3418 rc2.
split((v0+v1)/2);
3424 for (index_type i=0; i<4; ++i)
3430 rc3.
split((v0+v1)/2);
3433 piecewise_line_creator_type plc(1);
3473 ribs[0].set_right_fp(rs1);
3474 ribs[0].set_right_fpp(ra1);
3476 ribs[1].set_fp(rs2);
3477 ribs[1].set_fpp(ra2);
3479 ribs[2].set_left_fp(rs3);
3480 ribs[2].set_left_fpp(ra3);
3488 TEST_ASSERT(rtn_flag);
3493 TEST_ASSERT(rtn_flag);
3496 point_type p_test, p_ref;
3499 TEST_ASSERT(tol.approximately_equal(p00, p_test));
3505 TEST_ASSERT(tol.approximately_equal(p10, p_test));
3511 TEST_ASSERT(tol.approximately_equal(p20, p_test));
3517 TEST_ASSERT(tol.approximately_equal(p01, p_test));
3523 TEST_ASSERT(tol.approximately_equal(p11, p_test));
3529 TEST_ASSERT(tol.approximately_equal(p21, p_test));
3536 p_ref=ribs[0].get_f().f(v);
3537 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3542 p_ref=ribs[1].get_f().f(v);
3543 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3548 p_ref=ribs[2].get_f().f(v);
3549 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3553 p_test=s.
f_u(u0, v);
3554 p_ref=ribs[0].get_right_fp().f(v);
3555 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3559 p_test=s.
f_u(u1, v);
3560 p_ref=ribs[1].get_left_fp().f(v);
3561 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3565 p_test=s.
f_u(u2, v);
3566 p_ref=ribs[2].get_left_fp().f(v);
3567 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3571 p_test=s.
f_uu(u0, v);
3572 p_ref=ribs[0].get_right_fpp().f(v);
3573 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3577 p_test=s.
f_uu(u1, v);
3578 p_ref=ribs[1].get_left_fpp().f(v);
3579 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3583 p_test=s.
f_uu(u2, v);
3584 p_ref=ribs[2].get_left_fpp().f(v);
3585 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3591 p_ref=ribs[0].get_f().f(v);
3592 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3597 p_ref=ribs[1].get_f().f(v);
3598 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3603 p_ref=ribs[2].get_f().f(v);
3604 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3608 p_test=s.
f_u(u0, v);
3609 p_ref=ribs[0].get_right_fp().f(v);
3610 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3614 p_test=s.
f_u(u1, v);
3615 p_ref=ribs[1].get_left_fp().f(v);
3616 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3620 p_test=s.
f_u(u2, v);
3621 p_ref=ribs[2].get_left_fp().f(v);
3622 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3626 p_test=s.
f_uu(u0, v);
3627 p_ref=ribs[0].get_right_fpp().f(v);
3628 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3632 p_test=s.
f_uu(u1, v);
3633 p_ref=ribs[1].get_left_fpp().f(v);
3634 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3638 p_test=s.
f_uu(u2, v);
3639 p_ref=ribs[2].get_left_fpp().f(v);
3640 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3663 index_type nsegs(2);
3664 std::vector<rib_data_type> ribs(nsegs+1);
3665 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
3667 rib_curve_type rc1, rc2, rc3, rs1, rs2, rs3, ra1, ra2l, ra2r, ra3;
3668 general_creator_type gc;
3669 piecewise_surface_type s;
3670 point_type p00, p01, p10, p11, p20, p21, s00, s01, s10, s11, s20, s21, a00, a01, al10, al11, ar10, ar11, a20, a21;
3671 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
3705 for (index_type i=0; i<4; ++i)
3711 rc1.
split((v0+v1)/2);
3717 for (index_type i=0; i<4; ++i)
3723 rc2.
split((v0+v1)/2);
3729 for (index_type i=0; i<4; ++i)
3735 rc3.
split((v0+v1)/2);
3738 piecewise_line_creator_type plc(1);
3784 ribs[0].set_right_fp(rs1);
3785 ribs[0].set_right_fpp(ra1);
3787 ribs[1].set_fp(rs2);
3788 ribs[1].set_left_fpp(ra2l);
3789 ribs[1].set_right_fpp(ra2r);
3791 ribs[2].set_left_fp(rs3);
3792 ribs[2].set_left_fpp(ra3);
3800 TEST_ASSERT(rtn_flag);
3805 TEST_ASSERT(rtn_flag);
3808 point_type p_test, p_ref;
3809 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
3812 TEST_ASSERT(tol.approximately_equal(p00, p_test));
3818 TEST_ASSERT(tol.approximately_equal(p10, p_test));
3824 TEST_ASSERT(tol.approximately_equal(p20, p_test));
3830 TEST_ASSERT(tol.approximately_equal(p01, p_test));
3836 TEST_ASSERT(tol.approximately_equal(p11, p_test));
3842 TEST_ASSERT(tol.approximately_equal(p21, p_test));
3849 p_ref=ribs[0].get_f().f(v);
3850 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3855 p_ref=ribs[1].get_f().f(v);
3856 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3861 p_ref=ribs[2].get_f().f(v);
3862 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3866 p_test=s.
f_u(u0, v);
3867 p_ref=ribs[0].get_right_fp().f(v);
3868 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3872 p_test=s.
f_u(u1, v);
3873 p_ref=ribs[1].get_left_fp().f(v);
3874 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3878 p_test=s.
f_u(u2, v);
3879 p_ref=ribs[2].get_left_fp().f(v);
3880 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3884 p_test=s.
f_uu(u0, v);
3885 p_ref=ribs[0].get_right_fpp().f(v);
3886 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3890 p_test=s.
f_uu(u1-small_num, v);
3891 p_ref=ribs[1].get_left_fpp().f(v);
3892 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3896 p_test=s.
f_uu(u1+small_num, v);
3897 p_ref=ribs[1].get_right_fpp().f(v);
3898 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3902 p_test=s.
f_uu(u2, v);
3903 p_ref=ribs[2].get_left_fpp().f(v);
3904 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3910 p_ref=ribs[0].get_f().f(v);
3911 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3916 p_ref=ribs[1].get_f().f(v);
3917 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3922 p_ref=ribs[2].get_f().f(v);
3923 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3927 p_test=s.
f_u(u0, v);
3928 p_ref=ribs[0].get_right_fp().f(v);
3929 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3933 p_test=s.
f_u(u1, v);
3934 p_ref=ribs[1].get_left_fp().f(v);
3935 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3939 p_test=s.
f_u(u2, v);
3940 p_ref=ribs[2].get_left_fp().f(v);
3941 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3945 p_test=s.
f_uu(u0, v);
3946 p_ref=ribs[0].get_right_fpp().f(v);
3947 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3951 p_test=s.
f_uu(u1-small_num, v);
3952 p_ref=ribs[1].get_left_fpp().f(v);
3953 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3957 p_test=s.
f_uu(u1+small_num, v);
3958 p_ref=ribs[1].get_right_fpp().f(v);
3959 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3963 p_test=s.
f_uu(u2, v);
3964 p_ref=ribs[2].get_left_fpp().f(v);
3965 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
3988 index_type nsegs(2);
3989 std::vector<rib_data_type> ribs(nsegs+1);
3990 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
3992 rib_curve_type rc1, rc2, rc3, rs1, rs2, rs3, ra1, ra2, ra3;
3993 general_creator_type gc;
3994 piecewise_surface_type s;
3995 point_type p00, p01, p10, p11, p20, p21, s00, s01, s10, s11, s20, s21, a00, a01, a10, a11, a20, a21;
3996 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
4028 for (index_type i=0; i<4; ++i)
4039 for (index_type i=0; i<4; ++i)
4045 rc2.
split(v0+(v1-v0)/4);
4051 for (index_type i=0; i<4; ++i)
4057 rc3.
split((v0+v1)/2);
4060 piecewise_line_creator_type plc(1);
4073 rs1.
split((v0+v1)/2);
4092 ra2.
split(v0+4*(v1-v0)/5);
4108 ribs[0].set_right_fp(rs1);
4109 ribs[0].set_right_fpp(ra1);
4111 ribs[1].set_fp(rs2);
4112 ribs[1].set_fpp(ra2);
4114 ribs[2].set_left_fp(rs3);
4115 ribs[2].set_left_fpp(ra3);
4123 TEST_ASSERT(rtn_flag);
4128 TEST_ASSERT(rtn_flag);
4131 point_type p_test, p_ref;
4134 TEST_ASSERT(tol.approximately_equal(p00, p_test));
4140 TEST_ASSERT(tol.approximately_equal(p10, p_test));
4146 TEST_ASSERT(tol.approximately_equal(p20, p_test));
4152 TEST_ASSERT(tol.approximately_equal(p01, p_test));
4158 TEST_ASSERT(tol.approximately_equal(p11, p_test));
4164 TEST_ASSERT(tol.approximately_equal(p21, p_test));
4171 p_ref=ribs[0].get_f().f(v);
4172 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4177 p_ref=ribs[1].get_f().f(v);
4178 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4183 p_ref=ribs[2].get_f().f(v);
4184 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4188 p_test=s.
f_u(u0, v);
4189 p_ref=ribs[0].get_right_fp().f(v);
4190 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4194 p_test=s.
f_u(u1, v);
4195 p_ref=ribs[1].get_left_fp().f(v);
4196 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4200 p_test=s.
f_u(u2, v);
4201 p_ref=ribs[2].get_left_fp().f(v);
4202 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4206 p_test=s.
f_uu(u0, v);
4207 p_ref=ribs[0].get_right_fpp().f(v);
4208 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4212 p_test=s.
f_uu(u1, v);
4213 p_ref=ribs[1].get_left_fpp().f(v);
4214 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4218 p_test=s.
f_uu(u2, v);
4219 p_ref=ribs[2].get_left_fpp().f(v);
4220 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4226 p_ref=ribs[0].get_f().f(v);
4227 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4232 p_ref=ribs[1].get_f().f(v);
4233 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4238 p_ref=ribs[2].get_f().f(v);
4239 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4243 p_test=s.
f_u(u0, v);
4244 p_ref=ribs[0].get_right_fp().f(v);
4245 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4249 p_test=s.
f_u(u1, v);
4250 p_ref=ribs[1].get_left_fp().f(v);
4251 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4255 p_test=s.
f_u(u2, v);
4256 p_ref=ribs[2].get_left_fp().f(v);
4257 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4261 p_test=s.
f_uu(u0, v);
4262 p_ref=ribs[0].get_right_fpp().f(v);
4263 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4267 p_test=s.
f_uu(u1, v);
4268 p_ref=ribs[1].get_left_fpp().f(v);
4269 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4273 p_test=s.
f_uu(u2, v);
4274 p_ref=ribs[2].get_left_fpp().f(v);
4275 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4301 index_type nsegs(2);
4302 std::vector<rib_data_type> ribs(nsegs+1);
4303 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
4305 rib_curve_type rc1, rc2, rc3;
4306 general_creator_type gc;
4307 piecewise_surface_type s;
4308 point_type p00, p01, p10, p11, p20, p21;
4309 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
4321 piecewise_line_creator_type plc(1);
4353 TEST_ASSERT(rtn_flag);
4358 TEST_ASSERT(rtn_flag);
4361 point_type p_test, p_ref;
4362 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
4365 TEST_ASSERT(tol.approximately_equal(p00, p_test));
4371 TEST_ASSERT(tol.approximately_equal(p10, p_test));
4377 TEST_ASSERT(tol.approximately_equal(p20, p_test));
4383 TEST_ASSERT(tol.approximately_equal(p01, p_test));
4389 TEST_ASSERT(tol.approximately_equal(p11, p_test));
4395 TEST_ASSERT(tol.approximately_equal(p21, p_test));
4402 p_ref=ribs[0].get_f().f(v);
4403 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4408 p_ref=ribs[1].get_f().f(v);
4409 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4414 p_ref=ribs[2].get_f().f(v);
4415 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4419 p_test=s.
f_u(u1-small_num, v);
4420 p_ref=s.
f_u(u1+small_num, v);
4421 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4440 index_type nsegs(2);
4441 std::vector<rib_data_type> ribs(nsegs+1);
4442 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
4444 rib_curve_type rc1, rc2, rc3;
4445 general_creator_type gc;
4446 piecewise_surface_type s;
4447 point_type p00, p01, p10, p11, p20, p21;
4448 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
4468 for (index_type i=0; i<4; ++i)
4474 rc1.
split((v0+v1)/2);
4480 for (index_type i=0; i<4; ++i)
4486 rc2.
split((v0+v1)/2);
4492 for (index_type i=0; i<4; ++i)
4498 rc3.
split((v0+v1)/2);
4512 TEST_ASSERT(rtn_flag);
4517 TEST_ASSERT(rtn_flag);
4520 point_type p_test, p_ref;
4521 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
4524 TEST_ASSERT(tol.approximately_equal(p00, p_test));
4530 TEST_ASSERT(tol.approximately_equal(p10, p_test));
4536 TEST_ASSERT(tol.approximately_equal(p20, p_test));
4542 TEST_ASSERT(tol.approximately_equal(p01, p_test));
4548 TEST_ASSERT(tol.approximately_equal(p11, p_test));
4554 TEST_ASSERT(tol.approximately_equal(p21, p_test));
4561 p_ref=ribs[0].get_f().f(v);
4562 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4567 p_ref=ribs[1].get_f().f(v);
4568 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4573 p_ref=ribs[2].get_f().f(v);
4574 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4578 p_test=s.
f_u(u1-small_num, v);
4579 p_ref=s.
f_u(u1+small_num, v);
4580 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4586 p_ref=ribs[0].get_f().f(v);
4587 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4592 p_ref=ribs[1].get_f().f(v);
4593 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4598 p_ref=ribs[2].get_f().f(v);
4599 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4603 p_test=s.
f_u(u1-small_num, v);
4604 p_ref=s.
f_u(u1+small_num, v);
4605 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4624 index_type nsegs(2);
4625 std::vector<rib_data_type> ribs(nsegs+1);
4626 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
4628 rib_curve_type rc1, rc2, rc3;
4629 general_creator_type gc;
4630 piecewise_surface_type s;
4631 point_type p00, p01, p10, p11, p20, p21;
4632 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
4644 piecewise_line_creator_type plc(1);
4676 TEST_ASSERT(rtn_flag);
4681 TEST_ASSERT(rtn_flag);
4684 point_type p_test, p_ref;
4685 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
4688 TEST_ASSERT(tol.approximately_equal(p00, p_test));
4694 TEST_ASSERT(tol.approximately_equal(p10, p_test));
4700 TEST_ASSERT(tol.approximately_equal(p20, p_test));
4706 TEST_ASSERT(tol.approximately_equal(p01, p_test));
4712 TEST_ASSERT(tol.approximately_equal(p11, p_test));
4718 TEST_ASSERT(tol.approximately_equal(p21, p_test));
4725 p_ref=ribs[0].get_f().f(v);
4726 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4731 p_ref=ribs[1].get_f().f(v);
4732 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4737 p_ref=ribs[2].get_f().f(v);
4738 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4742 p_test=s.
f_u(u1-small_num, v);
4743 p_ref=s.
f_u(u1+small_num, v);
4744 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4748 p_test=s.
f_uu(u1-small_num, v);
4749 p_ref=s.
f_uu(u1+small_num, v);
4750 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4769 index_type nsegs(2);
4770 std::vector<rib_data_type> ribs(nsegs+1);
4771 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
4773 rib_curve_type rc1, rc2, rc3;
4774 general_creator_type gc;
4775 piecewise_surface_type s;
4776 point_type p00, p01, p10, p11, p20, p21;
4777 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
4797 for (index_type i=0; i<4; ++i)
4803 rc1.
split((v0+v1)/2);
4809 for (index_type i=0; i<4; ++i)
4815 rc2.
split((v0+v1)/2);
4821 for (index_type i=0; i<4; ++i)
4827 rc3.
split((v0+v1)/2);
4841 TEST_ASSERT(rtn_flag);
4846 TEST_ASSERT(rtn_flag);
4849 point_type p_test, p_ref;
4850 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
4853 TEST_ASSERT(tol.approximately_equal(p00, p_test));
4859 TEST_ASSERT(tol.approximately_equal(p10, p_test));
4865 TEST_ASSERT(tol.approximately_equal(p20, p_test));
4871 TEST_ASSERT(tol.approximately_equal(p01, p_test));
4877 TEST_ASSERT(tol.approximately_equal(p11, p_test));
4883 TEST_ASSERT(tol.approximately_equal(p21, p_test));
4890 p_ref=ribs[0].get_f().f(v);
4891 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4896 p_ref=ribs[1].get_f().f(v);
4897 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4902 p_ref=ribs[2].get_f().f(v);
4903 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4907 p_test=s.
f_u(u1-small_num, v);
4908 p_ref=s.
f_u(u1+small_num, v);
4909 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4913 p_test=s.
f_uu(u1-small_num, v);
4914 p_ref=s.
f_uu(u1+small_num, v);
4915 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4921 p_ref=ribs[0].get_f().f(v);
4922 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4927 p_ref=ribs[1].get_f().f(v);
4928 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4933 p_ref=ribs[2].get_f().f(v);
4934 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4938 p_test=s.
f_u(u1-small_num, v);
4939 p_ref=s.
f_u(u1+small_num, v);
4940 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4944 p_test=s.
f_uu(u1-small_num, v);
4945 p_ref=s.
f_uu(u1+small_num, v);
4946 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
4968 index_type nsegs(2);
4969 std::vector<rib_data_type> ribs(nsegs+1);
4970 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
4972 rib_curve_type rc1, rc2, rc3;
4973 general_creator_type gc;
4974 piecewise_surface_type s;
4975 point_type p00, p01, p10, p11, p20, p21;
4976 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
4988 piecewise_line_creator_type plc(1);
5020 TEST_ASSERT(rtn_flag);
5025 TEST_ASSERT(rtn_flag);
5028 point_type p_test, p_ref;
5029 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
5032 TEST_ASSERT(tol.approximately_equal(p00, p_test));
5038 TEST_ASSERT(tol.approximately_equal(p10, p_test));
5044 TEST_ASSERT(tol.approximately_equal(p20, p_test));
5050 TEST_ASSERT(tol.approximately_equal(p01, p_test));
5056 TEST_ASSERT(tol.approximately_equal(p11, p_test));
5062 TEST_ASSERT(tol.approximately_equal(p21, p_test));
5069 p_ref=ribs[0].get_f().f(v);
5070 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5075 p_ref=ribs[1].get_f().f(v);
5076 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5081 p_ref=ribs[2].get_f().f(v);
5082 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5086 p_test=s.
f_u(u1-small_num, v);
5087 p_ref=s.
f_u(u1+small_num, v);
5088 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5107 index_type nsegs(2);
5108 std::vector<rib_data_type> ribs(nsegs+1);
5109 std::vector<typename general_creator_type::index_type> max_degree(nsegs);
5111 rib_curve_type rc1, rc2, rc3;
5112 general_creator_type gc;
5113 piecewise_surface_type s;
5114 point_type p00, p01, p10, p11, p20, p21;
5115 data_type u0(2), v0(1), u1(4), v1(5), u2(7), v;
5127 piecewise_line_creator_type plc(1);
5157 TEST_ASSERT(rtn_flag);
5159 TEST_ASSERT(!rtn_flag);
5166 TEST_ASSERT(rtn_flag);
5171 TEST_ASSERT(rtn_flag);
5174 point_type p_test, p_ref;
5175 data_type small_num(100*std::numeric_limits<data_type>::epsilon());
5178 TEST_ASSERT(tol.approximately_equal(p00, p_test));
5184 TEST_ASSERT(tol.approximately_equal(p10, p_test));
5190 TEST_ASSERT(tol.approximately_equal(p20, p_test));
5196 TEST_ASSERT(tol.approximately_equal(p01, p_test));
5202 TEST_ASSERT(tol.approximately_equal(p11, p_test));
5208 TEST_ASSERT(tol.approximately_equal(p21, p_test));
5215 p_ref=ribs[0].get_f().f(v);
5216 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5221 p_ref=ribs[1].get_f().f(v);
5222 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5227 p_ref=ribs[2].get_f().f(v);
5228 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
5232 p_test=s.
f_u(u1-small_num, v);
5233 p_ref=s.
f_u(u1+small_num, v);
5234 TEST_ASSERT(tol.approximately_equal(p_test, p_ref));
eli::geom::curve::piecewise< eli::geom::curve::bezier, data__, 3 > piecewise_curve_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:40
bool set_right_fp(const curve_type &fpr)
Definition: piecewise_connection_data.hpp:409
void create_multirib_coupled_surface_test()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:4297
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
surface_type::point_type point_type
Definition: piecewise.hpp:59
bool unset_right_fp()
Definition: piecewise_connection_data.hpp:456
piecewise_surface_type::surface_type surface_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:41
void get_parameters(it__ itt) const
Definition: piecewise.hpp:380
bool use_left_fpp() const
Definition: piecewise_connection_data.hpp:541
void AddTests(const long double &)
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:74
bool check_state() const
Definition: piecewise_connection_data.hpp:560
eli::geom::surface::connection_data< data__, 3, tolerance_type > rib_data_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:46
void create_single_surface_test()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:730
data_type get_tmax() const
Definition: piecewise.hpp:333
Definition: piecewise_linear_creator.hpp:31
void AddTests(const double &)
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:64
Definition: piecewise_connection_data.hpp:46
void set_segment_dt(const data_type &dtt, const index_type &i)
Definition: piecewise_creator_base.hpp:64
piecewise_surface_type::index_type index_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:44
const curve_type & get_left_fpp() const
Definition: piecewise_connection_data.hpp:509
eli::geom::surface::piecewise< eli::geom::surface::bezier, data__, 3 > piecewise_surface_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:39
data__ data_type
Definition: piecewise.hpp:66
point_type f_u(const data_type &u, const data_type &v) const
Definition: piecewise.hpp:910
bool unset_fpp()
Definition: piecewise_connection_data.hpp:523
bool set_right_fpp(const curve_type &fppr)
Definition: piecewise_connection_data.hpp:487
connection_continuity get_continuity() const
Definition: piecewise_connection_data.hpp:555
point_type f(const data_type &u, const data_type &v) const
Definition: piecewise.hpp:897
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
Definition: piecewise.hpp:37
void set_u0(const data_type &uu0)
Definition: piecewise_general_skinning_surface_creator.hpp:76
Definition: piecewise.hpp:244
error_code push_front(const curve_type &curve, const data_type &dt=1.0)
Definition: piecewise.hpp:646
void create_rib_test()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:95
eli::geom::curve::piecewise_linear_creator< data__, 3, tolerance_type > piecewise_line_creator_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:48
Definition: piecewise_general_skinning_surface_creator.hpp:40
Definition: piecewise_connection_data.hpp:48
eli::geom::surface::piecewise_general_skinning_surface_creator< data__, 3, tolerance_type > general_creator_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:49
bool set_conditions(const std::vector< rib_data_type > &rbs, const std::vector< index_type > &maxd, bool cl=false)
Definition: piecewise_general_skinning_surface_creator.hpp:83
const curve_type & get_right_fpp() const
Definition: piecewise_connection_data.hpp:513
rib_data_type::curve_type rib_curve_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:47
piecewise_general_skinning_surface_creator_test_suite()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:86
bool set_left_fpp(const curve_type &fppl)
Definition: piecewise_connection_data.hpp:473
bool use_right_fpp() const
Definition: piecewise_connection_data.hpp:545
void create_multijoint_rib_single_surface_test()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:1481
bool unset_right_fpp()
Definition: piecewise_connection_data.hpp:534
void set_segment_du(const data_type &duu, const index_type &i)
Definition: piecewise_general_skinning_surface_creator.hpp:78
Definition: piecewise_connection_data.hpp:32
void AddTests(const float &)
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:54
tol__ tolerance_type
Definition: piecewise.hpp:68
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
void create_multirib_surface_test()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:2553
point_type f_uu(const data_type &u, const data_type &v) const
Definition: piecewise.hpp:942
virtual bool create(piecewise< bezier, data_type, dim__, tolerance_type > &pc) const
Definition: piecewise_linear_creator.hpp:63
void get_joints(output_it__ it_in) const
Definition: piecewise_connection_data.hpp:135
bool set_left_fp(const curve_type &fpl)
Definition: piecewise_connection_data.hpp:395
tolerance_type tol
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:51
surface_type::index_type index_type
Definition: piecewise.hpp:58
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:36
bool unset_f()
Definition: piecewise_connection_data.hpp:384
void create_max_degree_surface_test()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:4964
bool set_fp(const curve_type &p)
Definition: piecewise_connection_data.hpp:423
bool use_left_fp() const
Definition: piecewise_connection_data.hpp:463
void set_corner(const point_type &c, const index_type &i)
Definition: piecewise_linear_creator.hpp:46
piecewise_surface_type::data_type data_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:43
data_type get_t0() const
Definition: piecewise.hpp:335
bool use_f() const
Definition: piecewise_connection_data.hpp:389
void set_control_point(const control_point_type &cp, const index_type &i)
Definition: bezier.hpp:201
bool set_f(const curve_type &ff)
Definition: piecewise_connection_data.hpp:377
~piecewise_general_skinning_surface_creator_test_suite()
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:90
void set_t0(const data_type &t0_in)
Definition: piecewise.hpp:340
Definition: piecewise_connection_data.hpp:47
piecewise_surface_type::tolerance_type tolerance_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:45
error_code split(const data_type &t)
Definition: piecewise.hpp:1055
bool unset_left_fpp()
Definition: piecewise_connection_data.hpp:528
curve_type::control_point_type control_point_type
Definition: piecewise.hpp:273
bool unset_fp()
Definition: piecewise_connection_data.hpp:445
Definition: bezier.hpp:109
void set_t0(const data_type &tt0)
Definition: piecewise_creator_base.hpp:61
surface__< data__, dim__, tol__ > surface_type
Definition: piecewise.hpp:57
virtual bool create(piecewise_surface_type &ps) const
Definition: piecewise_general_skinning_surface_creator.hpp:165
bool unset_left_fp()
Definition: piecewise_connection_data.hpp:450
piecewise_surface_type::point_type point_type
Definition: piecewise_general_skinning_surface_creator_test_suite.hpp:42