35 #include <gtest/gtest.h>
42 #include "fcl_resources/config.h"
53 const S radius_1 = 20;
54 const S radius_2 = 10;
71 distance(&s1, tf1, &s2, tf2, request, result);
87 distance(&s1, tf1, &s2, tf2, request, result);
102 distance(&s1, tf1, &s2, tf2, request, result);
105 (tf1.translation() - tf2.translation()).norm() - radius_1 - radius_2;
111 Vector3<S> dir = (tf2.translation() - tf1.translation()).normalized();
114 distance_tolerance));
115 Vector3<S> p1_expected = tf2.translation() - dir * radius_2;
117 distance_tolerance));
121 template <
typename S>
140 distance(&s1, tf1, &s2, tf2, request, result);
150 distance(&s1, tf1, &s2, tf2, request, result);
157 ASSERT_NEAR(result.
min_distance, -5, distance_tolerance);
162 distance_tolerance * 100));
164 distance_tolerance * 100));
169 template <
typename S>
179 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometry<S>>;
180 const S cylinder_radius = 0.03;
181 const S cylinder_length = 0.65;
182 CollisionGeometryPtr_t cylinder_geo(
185 X_WC.translation() << 0.6, 0, 0.325;
188 const S sphere_radius = 0.055;
189 CollisionGeometryPtr_t sphere_geo(
new fcl::Sphere<S>(sphere_radius));
192 X_WS.matrix() << -0.9954758066, -0.0295866301, 0.0902914702, 0.5419794018,
193 -0.0851034786, -0.1449450565, -0.9857729599, -0.0621175025,
194 0.0422530022, -0.9889972506, 0.1417713719, 0.6016236576,
205 ASSERT_NO_THROW(
fcl::distance(&cylinder, &sphere, request, result));
212 EXPECT_LE(abs(p_CPc(2)), cylinder_length / 2);
213 EXPECT_LE(p_CPc.template head<2>().norm(), cylinder_radius);
217 EXPECT_LE(p_SPs.norm(), sphere_radius);
220 template <
typename S>
225 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
226 CollisionGeometryPtr_t cylinder_geo(
230 CollisionGeometryPtr_t box_geo(
231 new fcl::Box<S>(box_size(0), box_size(1), box_size(2)));
240 ASSERT_NO_THROW(
fcl::distance(&cylinder, &box, request, result));
248 EXPECT_LE(abs(p_CPc(2)), cylinder_length / 2 + tol);
249 EXPECT_LE(p_CPc.template head<2>().norm(), cylinder_radius);
253 EXPECT_TRUE((p_BPb.array().abs() <= box_size.array() / 2 + tol).all());
256 template <
typename S>
263 S cylinder_radius = 0.05;
264 S cylinder_length = 0.06;
267 X_WC.matrix() << -0.99999999997999022838, 6.2572835802045040178e-10,
268 6.3260669852976095481e-06, 0.57500009756757608503,
269 6.3260669851683709551e-06, -6.3943303429958554955e-10,
270 0.99999999997999056145, -0.42711963046787942977,
271 6.2573180158128459924e-10, 1, 6.3942912945996747041e-10,
272 1.1867093358746836351, 0, 0, 0, 1;
276 X_WB.matrix() << 0, -1, 0, 0.8,
285 X_WC.matrix() << -0.97313010759279283679, -0.12202804064972551379,
286 0.19526123781136842106, 0.87472781461138560122, 0.20950801135757171623,
287 -0.11745920593569325607, 0.97072639199619581429, -0.4038687881347159947,
288 -0.095520609678929752073, 0.98555187191549953329, 0.13986894183635001365,
289 1.5871328698116491385, 0, 0, 0, 1;
291 X_WB.matrix() << 0, -1, 0, 0.8,
300 template <
typename S>
306 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
307 CollisionGeometryPtr_t box1_geo(
308 new fcl::Box<S>(box1_size(0), box1_size(1), box1_size(2)));
311 CollisionGeometryPtr_t box2_geo(
312 new fcl::Box<S>(box2_size(0), box2_size(1), box2_size(2)));
321 ASSERT_NO_THROW(
fcl::distance(&box1, &box2, request, result));
329 const double tol_1 = tol *
std::max(S(1), (box1_size / 2).maxCoeff());
331 (p_B1P1.array().abs() <= (box1_size / 2).array() + tol_1).all())
332 <<
"\n p_B1P1: " << p_B1P1.transpose()
333 <<
"\n box1_size / 2: " << (box1_size / 2).transpose()
334 <<
"\n tol: " << tol_1;
337 const double tol_2 = tol *
std::max(S(1), (box2_size / 2).maxCoeff());
340 (p_B2P2.array().abs() <= (box2_size / 2).array() + tol_2).all())
341 <<
"\n p_B2P2: " << p_B2P2.transpose()
342 <<
"\n box2_size / 2: " << (box2_size / 2).transpose()
343 <<
"\n tol: " << tol_2;
356 template <
typename S>
358 SCOPED_TRACE(
"test_distance_box_box_regression1");
361 X_WB1.matrix() << -3.0627937852578681533e-08, -0.99999999999999888978,
362 -2.8893865161583314238e-08, 0.63499979627350811029, 0.9999999999999980016,
363 -3.0627939739957803544e-08, 6.4729926918527511769e-08,
364 -0.48500002215636439651, -6.4729927722963847085e-08,
365 -2.8893863029448751323e-08, 0.99999999999999711342, 1.0778146458339641356,
368 const Vector3<S> box2_size(0.025, 0.35, 1.845);
371 X_WB2.matrix() << 0, -1, 0, 0.8,
382 template <
typename S>
384 SCOPED_TRACE(
"test_distance_box_box_regression2");
387 X_WB1.matrix() << 1,0,0, -0.72099999999999997424,
388 0,1,0, -0.77200000000000001954,
389 0,0,1, 0.81000000000000005329,
392 const Vector3<S> box2_size(0.049521, 0.146, 0.0725);
395 X_WB2.matrix() << 0.10758262492983036718, -0.6624881850015212903, -0.74130653817877356637, -0.42677133002999478872,
396 0.22682184885125472595, -0.709614040775253474, 0.6670830248314786326, -0.76596851247746788882,
397 -0.96797615037608542021, -0.23991106241273435495, 0.07392465377049164954, 0.80746731400091054098,
406 template <
typename S>
408 SCOPED_TRACE(
"test_distance_box_box_regression3");
412 X_WB1.matrix() << 4.8966386501092529215e-12, -1,0,-0.43999999999999994671,
413 1, 4.8966386501092529215e-12,0,-0.61499999999858001587,
414 0,0,1,0.35499999999999998224,
417 const Vector3<S> box2_size(0.035, 0.12, 0.03);
420 X_WB2.matrix() << 0.83512153565236335595, -0.55006546945762568868, -9.4542360608233572896e-16, -0.40653441507331000704,
421 0.55006546945762568868, 0.83512153565236313391, 1.1787444236552387666e-15, -0.69166166923735727945,
422 1.2902271444330665572e-16, -1.4878153530113264589e-15, 1, 0.43057093858718892276,
430 template <
typename S>
432 SCOPED_TRACE(
"test_distance_box_box_regression4");
435 X_WB1.translation() << -0.675, 0, 0.9115;
436 const Vector3<S> box2_size(0.494, 0.552, 0.01);
438 X_WB2.translation() << -0.692, 0, 0.935;
444 template <
typename S>
446 SCOPED_TRACE(
"test_distance_box_box_regression5");
449 X_WB1.translation() << -0.071000000000000035305, -0.77200000000000001954, 0.79999999999999993339;
452 X_WB2.translation() << 0.12099999999999999645, -0.78769605692727695523, 0.53422044196125151316;
456 template <
typename S>
458 SCOPED_TRACE(
"test_distance_box_box_regression6");
459 const Vector3<S> box1_size(0.31650000000000000355, 0.22759999999999999676, 0.1768000000000000127);
462 X_WB1.matrix() << 0.44540578475530234748, 0.89532881496493399442, -8.8937407685638678971e-09, 1.2652949075960071568,
463 -0.89532881496493377238, 0.44540578475530190339, -2.8948680226084145336e-08, 1.4551012423210101243,
464 -2.1957263975186326105e-08, 2.0856732016652919226e-08, 0.99999999999999955591, 0.49480006232932938204,
467 const Vector3<S> box2_size(0.49430000000000001714, 0.35460000000000002629, 0.075200000000000002953);
470 X_WB2.matrix() << 0.44171122913485860728, 0.8971572827861190591, -1.622764514865468214e-09, 1.1304016226141906376,
471 -0.8971572827861190591, 0.44171122913485860728, -5.1621053952306079594e-09, 1.8410802645284281009,
472 -3.9144271413829990148e-09, 3.7360349218094348098e-09, 1, 0.44400006232932492933,
480 template <
typename S>
483 SCOPED_TRACE(
"test_distance_box_box_regression7");
484 const Vector3<S> box1_size(0.050000000000000002776, 0.55000000000000004441, 0.2999999999999999889);
487 X_WB1.matrix() << 0.00079632671073326442932, -0.99999968293183538748, 0, 0.75000000000000055511,
488 0.99999968293183538748, 0.00079632671073326442932, 0, -2.4083553715553102684e-15,
489 0, 0, 1, 0.14999999999999999445,
492 const Vector3<S> box2_size(0.25, 0.2000000000000000111,
493 0.14999999999999999445);
496 X_WB2.matrix() << 6.1232339957367660359e-17, 0, 1, 0.75,
497 -1, 6.1232339957367660359e-17, 6.1232339957367660359e-17, 0,
498 -6.1232339957367660359e-17, -1, 3.7493994566546440196e-33, 0.14999999999999999445,
513 template <
typename S>
515 SCOPED_TRACE(
"test_distance_box_box_regression_tilted_kissing_contact");
521 0.94096063217417758029, 0.29296840037289501035, 0.16959541586174811667,
522 -0.23569836841299879326, 0.92661523595848427348, -0.29296840037289506586,
523 -0.2429801799032638987, 0.23569836841299884878, 0.94096063217417758029;
525 for (
const S dim : {S(0.01), S(0.25), S(0.5), S(10), S(1000)}) {
530 X_WA.linear() = R_WF;
531 X_WA.translation() = p_WA;
533 X_WB.linear() = R_WF;
542 for (
const S
distance : {S(-1e-15), S(-2.5e-16), S(-1e-16), S(0), S(1e-16),
543 S(2.5e-16), S(1e-15)}) {
547 X_WB.translation() = p_WA + R_WF * p_AB_F;
548 SCOPED_TRACE(
"dim: " + std::to_string(dim) +
549 ", distance: " + std::to_string(
distance));
559 template <
typename S>
561 SCOPED_TRACE(
"test_distance_sphere_box_regression1");
562 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometry<S>>;
563 const S sphere_radius = 0.06;
564 CollisionGeometryPtr_t sphere_geo(
new fcl::Sphere<S>(sphere_radius));
567 X_WS.matrix() << -0.99999999999999955591, -4.4637642593504144998e-09, 0, 1.7855056639081962376e-10,
568 4.4637642593504144998e-09, -0.99999999999999955591, 0, 0.039999999999999993894,
569 0, 0, 1.0000000000000008882, 0.33000000000000012657,
574 CollisionGeometryPtr_t box_geo(
new fcl::Box<S>(0.1, 0.1, 0.1));
577 X_WB.matrix() << 1, 0, 0, 0.05,
589 ASSERT_NO_THROW(
fcl::distance(&sphere, &box, request, result));
595 template <
typename S>
600 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
602 std::make_shared<
const std::vector<
Vector3<S>>>(
604 Vector3<S>(0.5, 0.70710700000000004106, -0.70710700000000004106),
608 Vector3<S>(0.5, -0.70710700000000004106, -0.70710700000000004106),
610 Vector3<S>(-0.5, -0.70710700000000004106, 0.70710700000000004106),
611 Vector3<S>(-0.5, 0.70710700000000004106, 0.70710700000000004106),
614 Vector3<S>(-0.5, 0.70710700000000004106, -0.70710700000000004106),
617 -0.70710700000000004106),
619 Vector3<S>(0.5, 0.70710700000000004106, 0.70710700000000004106),
620 Vector3<S>(0.5, -0.70710700000000004106, 0.70710700000000004106),
623 std::make_shared<std::vector<int>>(std::initializer_list<int>{
624 4, 4, 12, 11, 1, 4, 13, 7, 14, 2, 4, 2, 0, 10, 13,
625 4, 11, 10, 0, 1, 8, 2, 14, 8, 15, 3, 4, 1, 0, 4,
626 3, 9, 12, 4, 4, 15, 6, 9, 3, 8, 12, 9, 6, 5, 7,
627 13, 10, 11, 4, 14, 7, 5, 8, 4, 8, 5, 6, 15,
632 X_WG1.matrix() << -2.0399676677885372849e-09, 0.77129744817973977522, -0.63647485922966484662, 11.477445682202462862,
633 2.4720879917217940548e-09, 0.63647485922966484662, 0.77129744817973977522, 9.7785056920756936449,
634 1, 0, -3.2051032938795742666e-09, 0,
642 Vector3<S>(10.294759000000000881, 8.9321570000000001244, -0.5),
643 Vector3<S>(11.618370999999999782, 9.4565629999999991639, -0.5),
644 Vector3<S>(11.452372999999999692, 8.2276720000000000965, -0.5),
645 Vector3<S>(10.294759000000000881, 8.9321570000000001244, 0.5),
646 Vector3<S>(11.452372999999999692, 8.2276720000000000965, 0.5),
647 Vector3<S>(11.618370999999999782, 9.4565629999999991639, 0.5),
650 std::make_shared<std::vector<int>>(std::initializer_list<int>{
651 3, 3, 4, 5, 4, 4, 2, 1, 5, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
661 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
667 template <
typename S>
671 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
673 std::make_shared<
const std::vector<
Vector3<S>>>(
675 Vector3<S>(0.5, 0.5, -0.86602500000000004476),
676 Vector3<S>(0.5, -0.5, -0.86602500000000004476),
678 Vector3<S>(-0.5, -0.5, 0.86602500000000004476),
679 Vector3<S>(-0.5, 0.5, 0.86602500000000004476),
681 Vector3<S>(0.5, -0.5, 0.86602500000000004476),
682 Vector3<S>(-0.5, 0.5, -0.86602500000000004476),
683 Vector3<S>(-0.5, -0.5, -0.86602500000000004476),
689 std::make_shared<std::vector<int>>(std::initializer_list<int>{
690 4, 10, 5, 8, 1, 6, 2, 11, 6, 10, 1, 0, 4, 0, 7,
691 9, 2, 4, 1, 8, 7, 0, 4, 2, 9, 4, 11, 6, 8, 5,
692 3, 4, 9, 7, 4, 6, 3, 5, 10, 4, 4, 3, 6, 11,
698 -3.0140487242790098936e-09, 0.34009658459984087875, -0.94039051098122172778, 4.2864836941313040342,
699 1.090044683538143324e-09, 0.94039051098122172778, 0.34009658459984087875, 7.3869576872253679412,
700 1, 0, -3.2051032938795742666e-09, 0,
708 Vector3<S>(4.1494020000000002568, 8.4937090000000008416, -0.5),
709 Vector3<S>(5.1884509999999997021, 7.476263000000000325, -0.5),
710 Vector3<S>(3.9316469999999998919, 7.3745029999999998083, -0.5),
711 Vector3<S>(4.1494020000000002568, 8.4937090000000008416, 0.5),
712 Vector3<S>(3.9316469999999998919, 7.3745029999999998083, 0.5),
713 Vector3<S>(5.1884509999999997021, 7.476263000000000325, 0.5),
716 std::make_shared<std::vector<int>>(std::initializer_list<int>{
717 3, 5, 3, 4, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
727 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
733 template <
typename S>
737 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
739 std::make_shared<
const std::vector<
Vector3<S>>>(
742 Vector3<S>(0.5, 0.62348999999999998867, -0.7818310000000000537),
743 Vector3<S>(0.5, -0.22252099999999999658, -0.97492800000000001681),
744 Vector3<S>(0.5, 0.62348999999999998867, 0.7818310000000000537),
745 Vector3<S>(-0.5, -0.90096900000000001985, 0.4338839999999999919),
746 Vector3<S>(-0.5, -0.22252099999999999658, 0.97492800000000001681),
747 Vector3<S>(-0.5, -0.90096900000000001985, -0.4338839999999999919),
748 Vector3<S>(0.5, -0.90096900000000001985, 0.4338839999999999919),
749 Vector3<S>(-0.5, 0.62348999999999998867, -0.7818310000000000537),
750 Vector3<S>(-0.5, 0.62348999999999998867, 0.7818310000000000537),
752 -0.97492800000000001681),
754 Vector3<S>(0.5, -0.90096900000000001985, -0.4338839999999999919),
755 Vector3<S>(0.5, -0.22252099999999999658, 0.97492800000000001681),
758 std::make_shared<std::vector<int>>(std::initializer_list<int>{
759 4, 10, 2, 12, 6, 4, 1, 8, 11, 0, 4, 10, 8, 1, 2, 7, 2,
760 1, 0, 3, 13, 7, 12, 4, 9, 3, 0, 11, 4, 9, 5, 13, 3, 7,
761 8, 10, 6, 4, 5, 9, 11, 4, 12, 7, 4, 6, 4, 13, 5, 4, 7,
767 -2.0479437360480804916e-09, -0.76923712747984118732, -0.63896341186844385351, 13.670417904867957049,
768 -2.4654844510601008403e-09, 0.63896341186844385351, -0.76923712747984118732, 13.169816779836704512,
769 1, 0, -3.2051032938795742666e-09, 0,
777 Vector3<S>(14.835100999999999871, 13.060409999999999187, -0.5),
778 Vector3<S>(13.785037000000000873, 12.890523999999999205, -0.5),
779 Vector3<S>(14.767995000000000871, 13.150247999999999493, -0.5),
780 Vector3<S>(14.835100999999999871, 13.060409999999999187, 0.5),
781 Vector3<S>(14.767995000000000871, 13.150247999999999493, 0.5),
782 Vector3<S>(13.785037000000000873, 12.890523999999999205, 0.5),
785 std::make_shared<std::vector<int>>(std::initializer_list<int>{
786 3, 3, 4, 5, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 5, 1, 0, 3,
796 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
802 template <
typename S>
806 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
808 std::make_shared<
const std::vector<
Vector3<S>>>(
810 Vector3<S>(0.5, -0.92388000000000003453, 0.38268299999999999539),
811 Vector3<S>(-0.5, 0.92388000000000003453, -0.38268299999999999539),
812 Vector3<S>(0.5, 0.92388000000000003453, -0.38268299999999999539),
813 Vector3<S>(-0.5, 0.92388000000000003453, 0.38268299999999999539),
815 -0.38268299999999999539),
816 Vector3<S>(0.5, 0.92388000000000003453, 0.38268299999999999539),
817 Vector3<S>(-0.5, -0.92388000000000003453, 0.38268299999999999539),
818 Vector3<S>(0.5, -0.92388000000000003453, -0.38268299999999999539),
821 std::make_shared<std::vector<int>>(std::initializer_list<int>{
822 4, 3, 6, 0, 5, 4, 7, 2, 5, 0, 4, 6, 4, 7, 0,
823 4, 2, 1, 3, 5, 4, 3, 1, 4, 6, 4, 7, 4, 1, 2,
829 -2.6487935924268804787e-09, -0.56303944378188575115, -0.82643002410717436579, 15.712812998638135298,
830 -1.8045995758494454423e-09, 0.82643002410717436579, -0.56303944378188575115, 10.219809745800642276,
831 1, 0, -3.2051032938795742666e-09, 0,
839 Vector3<S>(15.417082000000000619, 9.6986209999999992704, -0.5),
840 Vector3<S>(16.236605000000000842, 9.2332309999999999661, -0.5),
841 Vector3<S>(16.224319999999998743, 8.9158489999999996911, -0.5),
842 Vector3<S>(15.417082000000000619, 9.6986209999999992704, 0.5),
843 Vector3<S>(16.224319999999998743, 8.9158489999999996911, 0.5),
844 Vector3<S>(16.236605000000000842, 9.2332309999999999661, 0.5),
847 std::make_shared<std::vector<int>>(std::initializer_list<int>{
848 3, 3, 4, 5, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 4, 3, 0, 2, 4, 5, 1, 0, 3,
858 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
864 template <
typename S>
868 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
870 std::make_shared<
const std::vector<
Vector3<S>>>(
872 Vector3<S>(0.5, 0.5, -0.86602500000000004476),
873 Vector3<S>(0.5, -0.5, -0.86602500000000004476),
875 Vector3<S>(-0.5, -0.5, 0.86602500000000004476),
876 Vector3<S>(-0.5, 0.5, 0.86602500000000004476),
878 Vector3<S>(0.5, -0.5, 0.86602500000000004476),
879 Vector3<S>(-0.5, 0.5, -0.86602500000000004476),
880 Vector3<S>(-0.5, -0.5, -0.86602500000000004476),
886 std::make_shared<std::vector<int>>(std::initializer_list<int>{
887 4, 10, 5, 8, 1, 6, 2, 11, 6, 10, 1, 0, 4, 0, 7,
888 9, 2, 4, 1, 8, 7, 0, 4, 2, 9, 4, 11, 6, 8, 5,
889 3, 4, 9, 7, 4, 6, 3, 5, 10, 4, 4, 3, 6, 11,
895 -2.2411796174427631456e-09, 0.7148738189791493669, -0.69925347545662319693, 6.3335747278141161232,
896 2.2912444319183419853e-09, 0.69925347545662319693, 0.7148738189791493669, 8.4631576303276716544,
897 1, 0, -3.2051032938795742666e-09, 0,
905 Vector3<S>(5.2423630000000001061, 9.1228110000000004476, -0.5),
906 Vector3<S>(6.3596640000000004278, 8.2852599999999991809, -0.5),
907 Vector3<S>(5.6703770000000002227, 7.5985389999999997102, -0.5),
908 Vector3<S>(5.2423630000000001061, 9.1228110000000004476, 0.5),
909 Vector3<S>(5.6703770000000002227, 7.5985389999999997102, 0.5),
910 Vector3<S>(6.3596640000000004278, 8.2852599999999991809, 0.5),
913 std::make_shared<std::vector<int>>(std::initializer_list<int>{
914 3, 3, 4, 5, 4, 4, 2, 1, 5, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
924 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
930 template <
typename S>
934 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
936 std::make_shared<
const std::vector<
Vector3<S>>>(
938 Vector3<S>(0.5, 0.30901699999999998614, -0.95105700000000004124),
940 Vector3<S>(-0.5, -0.80901699999999998614, 0.58778500000000000192),
941 Vector3<S>(-0.5, 0.30901699999999998614, 0.95105700000000004124),
943 -0.58778500000000000192),
944 Vector3<S>(0.5, -0.80901699999999998614, 0.58778500000000000192),
945 Vector3<S>(-0.5, 0.30901699999999998614, -0.95105700000000004124),
947 Vector3<S>(0.5, -0.80901699999999998614, -0.58778500000000000192),
948 Vector3<S>(0.5, 0.30901699999999998614, 0.95105700000000004124),
951 std::make_shared<std::vector<int>>(std::initializer_list<int>{
952 4, 0, 6, 7, 1, 5, 9, 5, 8, 0, 1, 4, 0, 8, 4, 6, 4, 1, 7,
953 3, 9, 5, 6, 4, 2, 3, 7, 4, 8, 5, 2, 4, 4, 3, 2, 5, 9,
959 -3.1934130613594990691e-09, -0.085331461972016672823, -0.99635261910516315087, 11.261494468063983021,
960 -2.7349614983807029573e-10, 0.99635261910516315087, -0.085331461972016672823, 5.7102314848013024928,
961 1, 0, -3.2051032938795742666e-09, 0,
969 Vector3<S>(10.924768999999999508, 5.6701019999999999754, -0.5),
970 Vector3<S>(10.83925699999999992, 4.8329899999999996751, -0.5),
971 Vector3<S>(11.452507000000000659, 5.5209809999999999164, -0.5),
972 Vector3<S>(10.924768999999999508, 5.6701019999999999754, 0.5),
973 Vector3<S>(11.452507000000000659, 5.5209809999999999164, 0.5),
974 Vector3<S>(10.83925699999999992, 4.8329899999999996751, 0.5),
977 std::make_shared<std::vector<int>>(std::initializer_list<int>{
978 3, 4, 3, 5, 4, 5, 1, 2, 4, 3, 1, 0, 2, 4, 2, 0, 3, 4, 4, 5, 3, 0, 1,
988 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
994 template <
typename S>
998 using CollisionGeometryPtr_t = std::shared_ptr<fcl::CollisionGeometryd>;
1000 std::make_shared<
const std::vector<
Vector3<S>>>(
1002 Vector3<S>(-0.5, -0.5, -0.86602500000000004476),
1003 Vector3<S>(-0.5, -0.5, 0.86602500000000004476),
1005 Vector3<S>(0.5, -0.5, -0.86602500000000004476),
1007 Vector3<S>(0.5, -0.5, 0.86602500000000004476),
1010 std::make_shared<std::vector<int>>(std::initializer_list<int>{
1011 3, 5, 3, 4, 4, 2, 1, 5, 4, 3, 2, 0, 1, 4, 3, 0, 2, 4, 4, 1, 0, 3, 5,
1017 -3.155367699156126597e-09, -0.17548349096519452739, -0.98448237383849002136, 9.4277544959429171456,
1018 -5.6244271491403150214e-10, 0.98448237383849002136, -0.17548349096519452739, 4.3549730982604870633,
1019 1, 0, -3.2051032938795742666e-09, 0,
1027 Vector3<S>(7.502455000000000318, 3.9926669999999999661, -0.5),
1028 Vector3<S>(7.9127499999999999503, 2.7334600000000000009, -0.5),
1029 Vector3<S>(8.6743819999999995929, 3.7108469999999997846, -0.5),
1030 Vector3<S>(7.502455000000000318, 3.9926669999999999661, 0.5),
1031 Vector3<S>(8.6743819999999995929, 3.7108469999999997846, 0.5),
1032 Vector3<S>(7.9127499999999999503, 2.7334600000000000009, 0.5),
1035 std::make_shared<std::vector<int>>(std::initializer_list<int>{
1036 3, 3, 5, 4, 4, 5, 1, 2, 4, 3, 1, 0, 2, 4, 4, 2, 0, 3, 4, 3, 0, 1, 5,
1046 ASSERT_NO_THROW(
fcl::distance(&convex1, &convex2, request, result));
1055 test_distance_spheresphere<double>(
GST_LIBCCD);
1059 test_distance_spheresphere<double>(
GST_INDEP);
1063 test_distance_spherecapsule<double>(
GST_LIBCCD);
1067 test_distance_spherecapsule<double>(
GST_INDEP);
1071 test_distance_cylinder_sphere1<double>();
1075 test_distance_cylinder_box<double>();
1082 test_distance_box_box_regression1<double>();
1086 test_distance_box_box_regression2<double>();
1090 test_distance_box_box_regression3<double>();
1094 test_distance_box_box_regression4<double>();
1098 test_distance_box_box_regression5<double>();
1102 test_distance_box_box_regression6<double>();
1106 test_distance_box_box_regression7<double>();
1110 test_distance_box_box_regression_tilted_kissing_contact<double>();
1114 test_distance_sphere_box_regression1<double>();
1118 test_distance_convex_to_convex1<double>();
1122 test_distance_convex_to_convex2<double>();
1126 test_distance_convex_to_convex3<double>();
1130 test_distance_convex_to_convex4<double>();
1134 test_distance_convex_to_convex5<double>();
1138 test_distance_convex_to_convex6<double>();
1142 test_distance_convex_to_convex7<double>();
1147 ::testing::InitGoogleTest(&argc, argv);
1148 return RUN_ALL_TESTS();