| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | * Software License Agreement (BSD License) | ||
| 3 | * | ||
| 4 | * Copyright (c) 2022, INRIA | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * | ||
| 11 | * * Redistributions of source code must retain the above copyright | ||
| 12 | * notice, this list of conditions and the following disclaimer. | ||
| 13 | * * Redistributions in binary form must reproduce the above | ||
| 14 | * copyright notice, this list of conditions and the following | ||
| 15 | * disclaimer in the documentation and/or other materials provided | ||
| 16 | * with the distribution. | ||
| 17 | * * Neither the name of Willow Garage, Inc. nor the names of its | ||
| 18 | * contributors may be used to endorse or promote products derived | ||
| 19 | * from this software without specific prior written permission. | ||
| 20 | * | ||
| 21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
| 22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
| 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
| 24 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
| 25 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||
| 27 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 28 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| 29 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
| 30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | ||
| 31 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 32 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 33 | */ | ||
| 34 | |||
| 35 | /** \author Louis Montaut */ | ||
| 36 | |||
| 37 | #define BOOST_TEST_MODULE COAL_NESTEROV_GJK | ||
| 38 | #include <boost/test/included/unit_test.hpp> | ||
| 39 | |||
| 40 | #include <Eigen/Geometry> | ||
| 41 | #include "coal/narrowphase/narrowphase.h" | ||
| 42 | #include "coal/shape/geometric_shapes.h" | ||
| 43 | #include "coal/internal/tools.h" | ||
| 44 | |||
| 45 | #include "utility.h" | ||
| 46 | |||
| 47 | using coal::Box; | ||
| 48 | using coal::Capsule; | ||
| 49 | using coal::constructPolytopeFromEllipsoid; | ||
| 50 | using coal::ConvexTpl; | ||
| 51 | using coal::Ellipsoid; | ||
| 52 | using coal::GJKSolver; | ||
| 53 | using coal::GJKVariant; | ||
| 54 | using coal::Scalar; | ||
| 55 | using coal::ShapeBase; | ||
| 56 | using coal::SolverScalar; | ||
| 57 | using coal::support_func_guess_t; | ||
| 58 | using coal::Transform3s; | ||
| 59 | using coal::Triangle32; | ||
| 60 | using coal::Vec3ps; | ||
| 61 | using coal::Vec3s; | ||
| 62 | using coal::details::GJK; | ||
| 63 | using coal::details::MinkowskiDiff; | ||
| 64 | using coal::details::SupportOptions; | ||
| 65 | using std::size_t; | ||
| 66 | |||
| 67 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(set_gjk_variant) { |
| 68 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | GJKSolver solver; |
| 69 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | GJK gjk(128, Scalar(1e-6)); |
| 70 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MinkowskiDiff shape; |
| 71 | |||
| 72 | // Checking defaults | ||
| 73 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(solver.gjk.gjk_variant == GJKVariant::DefaultGJK); |
| 74 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(gjk.gjk_variant == GJKVariant::DefaultGJK); |
| 75 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(shape.normalize_support_direction == false); |
| 76 | |||
| 77 | // Checking set | ||
| 78 | 2 | solver.gjk.gjk_variant = GJKVariant::NesterovAcceleration; | |
| 79 | 2 | gjk.gjk_variant = GJKVariant::NesterovAcceleration; | |
| 80 | |||
| 81 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(solver.gjk.gjk_variant == GJKVariant::NesterovAcceleration); |
| 82 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(gjk.gjk_variant == GJKVariant::NesterovAcceleration); |
| 83 | |||
| 84 | 2 | solver.gjk.gjk_variant = GJKVariant::PolyakAcceleration; | |
| 85 | 2 | gjk.gjk_variant = GJKVariant::PolyakAcceleration; | |
| 86 | |||
| 87 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(solver.gjk.gjk_variant == GJKVariant::PolyakAcceleration); |
| 88 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(gjk.gjk_variant == GJKVariant::PolyakAcceleration); |
| 89 | 2 | } | |
| 90 | |||
| 91 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(need_nesterov_normalize_support_direction) { |
| 92 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid = Ellipsoid(1, 1, 1); |
| 93 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box = Box(1, 1, 1); |
| 94 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx; |
| 95 | |||
| 96 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MinkowskiDiff mink_diff1; |
| 97 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | mink_diff1.set<SupportOptions::NoSweptSphere>(&ellipsoid, &ellipsoid); |
| 98 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(mink_diff1.normalize_support_direction == false); |
| 99 | |||
| 100 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MinkowskiDiff mink_diff2; |
| 101 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | mink_diff2.set<SupportOptions::NoSweptSphere>(&ellipsoid, &box); |
| 102 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(mink_diff2.normalize_support_direction == false); |
| 103 | |||
| 104 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MinkowskiDiff mink_diff3; |
| 105 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | mink_diff3.set<SupportOptions::NoSweptSphere>(&cvx, &cvx); |
| 106 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
|
2 | BOOST_CHECK(mink_diff3.normalize_support_direction == true); |
| 107 | 2 | } | |
| 108 | |||
| 109 | 31 | void test_accelerated_gjk(const ShapeBase& shape0, const ShapeBase& shape1) { | |
| 110 | // Solvers | ||
| 111 | 31 | unsigned int max_iterations = 128; | |
| 112 | 31 | Scalar tolerance = Scalar(1e-6); | |
| 113 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | GJK gjk(max_iterations, tolerance); |
| 114 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | GJK gjk_nesterov(max_iterations, tolerance); |
| 115 | 31 | gjk_nesterov.gjk_variant = GJKVariant::NesterovAcceleration; | |
| 116 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | GJK gjk_polyak(max_iterations, tolerance); |
| 117 | 31 | gjk_polyak.gjk_variant = GJKVariant::PolyakAcceleration; | |
| 118 | |||
| 119 | // Minkowski difference | ||
| 120 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | MinkowskiDiff mink_diff; |
| 121 | |||
| 122 | // Generate random transforms | ||
| 123 | 31 | size_t n = 1000; | |
| 124 | 31 | Scalar extents[] = {-3., -3., 0, 3., 3., 3.}; | |
| 125 | 31 | std::vector<Transform3s> transforms; | |
| 126 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | generateRandomTransforms(extents, transforms, n); |
| 127 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | Transform3s identity = Transform3s::Identity(); |
| 128 | |||
| 129 | // Same init for both solvers | ||
| 130 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | Vec3s init_guess = Vec3s(1, 0, 0); |
| 131 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | support_func_guess_t init_support_guess; |
| 132 |
1/2✓ Branch 1 taken 31 times.
✗ Branch 2 not taken.
|
31 | init_support_guess.setZero(); |
| 133 | |||
| 134 |
2/2✓ Branch 0 taken 31000 times.
✓ Branch 1 taken 31 times.
|
31031 | for (size_t i = 0; i < n; ++i) { |
| 135 | // No need to take into account swept-sphere radius in supports computation | ||
| 136 | // when using GJK/EPA; after they have converged, these algos will correctly | ||
| 137 | // handle the swept-sphere radius of the shapes. | ||
| 138 |
1/2✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
|
31000 | mink_diff.set<SupportOptions::NoSweptSphere>(&shape0, &shape1, identity, |
| 139 | 31000 | transforms[i]); | |
| 140 | |||
| 141 | // Evaluate both solvers twice, make sure they give the same solution | ||
| 142 | 62000 | GJK::Status res_gjk_1 = gjk.evaluate( | |
| 143 |
2/4✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31000 times.
✗ Branch 5 not taken.
|
31000 | mink_diff, init_guess.cast<SolverScalar>(), init_support_guess); |
| 144 |
1/2✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
|
31000 | Vec3ps ray_gjk = gjk.ray; |
| 145 | 31000 | GJK::Status res_gjk_2 = gjk.evaluate( | |
| 146 |
2/4✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31000 times.
✗ Branch 5 not taken.
|
31000 | mink_diff, init_guess.cast<SolverScalar>(), init_support_guess); |
| 147 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 31000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 31000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 31000 times.
|
31000 | BOOST_CHECK(res_gjk_1 == res_gjk_2); |
| 148 |
16/32✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 31000 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 31000 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 31000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 31000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 31000 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 31000 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 31000 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 31000 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 31000 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 31000 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 31000 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 31000 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 31000 times.
✗ Branch 47 not taken.
✗ Branch 57 not taken.
✓ Branch 58 taken 31000 times.
|
31000 | EIGEN_VECTOR_IS_APPROX(ray_gjk, gjk.ray, SolverScalar(1e-8)); |
| 149 | |||
| 150 | // -------------- | ||
| 151 | // -- Nesterov -- | ||
| 152 | // -------------- | ||
| 153 | 62000 | GJK::Status res_nesterov_gjk_1 = gjk_nesterov.evaluate( | |
| 154 |
2/4✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31000 times.
✗ Branch 5 not taken.
|
31000 | mink_diff, init_guess.cast<SolverScalar>(), init_support_guess); |
| 155 |
1/2✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
|
31000 | Vec3ps ray_nesterov = gjk_nesterov.ray; |
| 156 | 31000 | GJK::Status res_nesterov_gjk_2 = gjk_nesterov.evaluate( | |
| 157 |
2/4✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31000 times.
✗ Branch 5 not taken.
|
31000 | mink_diff, init_guess.cast<SolverScalar>(), init_support_guess); |
| 158 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 31000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 31000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 31000 times.
|
31000 | BOOST_CHECK(res_nesterov_gjk_1 == res_nesterov_gjk_2); |
| 159 |
16/32✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 31000 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 31000 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 31000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 31000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 31000 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 31000 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 31000 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 31000 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 31000 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 31000 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 31000 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 31000 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 31000 times.
✗ Branch 47 not taken.
✗ Branch 57 not taken.
✓ Branch 58 taken 31000 times.
|
31000 | EIGEN_VECTOR_IS_APPROX(ray_nesterov, gjk_nesterov.ray, SolverScalar(1e-8)); |
| 160 | |||
| 161 | // Make sure GJK and Nesterov accelerated GJK find the same distance between | ||
| 162 | // the shapes | ||
| 163 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 31000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 31000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 31000 times.
|
31000 | BOOST_CHECK(res_nesterov_gjk_1 == res_gjk_1); |
| 164 |
7/14✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 31000 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 31000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 31000 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 31000 times.
|
31000 | BOOST_CHECK_SMALL(fabs(ray_gjk.norm() - ray_nesterov.norm()), |
| 165 | SolverScalar(1e-4)); | ||
| 166 | |||
| 167 | // Make sure GJK and Nesterov accelerated GJK converges in a reasonable | ||
| 168 | // amount of iterations | ||
| 169 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 31000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 31000 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 31000 times.
|
31000 | BOOST_CHECK(gjk.getNumIterations() < max_iterations); |
| 170 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 31000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 31000 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 31000 times.
|
31000 | BOOST_CHECK(gjk_nesterov.getNumIterations() < max_iterations); |
| 171 | |||
| 172 | // ------------ | ||
| 173 | // -- Polyak -- | ||
| 174 | // ------------ | ||
| 175 | 62000 | GJK::Status res_polyak_gjk_1 = gjk_polyak.evaluate( | |
| 176 |
2/4✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31000 times.
✗ Branch 5 not taken.
|
31000 | mink_diff, init_guess.cast<SolverScalar>(), init_support_guess); |
| 177 |
1/2✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
|
31000 | Vec3ps ray_polyak = gjk_polyak.ray; |
| 178 | 31000 | GJK::Status res_polyak_gjk_2 = gjk_polyak.evaluate( | |
| 179 |
2/4✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 31000 times.
✗ Branch 5 not taken.
|
31000 | mink_diff, init_guess.cast<SolverScalar>(), init_support_guess); |
| 180 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 31000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 31000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 31000 times.
|
31000 | BOOST_CHECK(res_polyak_gjk_1 == res_polyak_gjk_2); |
| 181 |
16/32✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 31000 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 31000 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 31000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 31000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 31000 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 31000 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 31000 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 31000 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 31000 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 31000 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 31000 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 31000 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 31000 times.
✗ Branch 47 not taken.
✗ Branch 57 not taken.
✓ Branch 58 taken 31000 times.
|
31000 | EIGEN_VECTOR_IS_APPROX(ray_polyak, gjk_polyak.ray, SolverScalar(1e-8)); |
| 182 | |||
| 183 | // Make sure GJK and Polyak accelerated GJK find the same distance between | ||
| 184 | // the shapes | ||
| 185 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 31000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 31000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 31000 times.
|
31000 | BOOST_CHECK(res_polyak_gjk_1 == res_gjk_1); |
| 186 |
7/14✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 31000 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 31000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 31000 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 31000 times.
|
31000 | BOOST_CHECK_SMALL(fabs(ray_gjk.norm() - ray_polyak.norm()), |
| 187 | SolverScalar(1e-4)); | ||
| 188 | |||
| 189 | // Make sure GJK and Polyak accelerated GJK converges in a reasonable | ||
| 190 | // amount of iterations | ||
| 191 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 31000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 31000 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 31000 times.
|
31000 | BOOST_CHECK(gjk.getNumIterations() < max_iterations); |
| 192 |
6/12✓ Branch 1 taken 31000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 31000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 31000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 31000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 31000 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 31000 times.
|
31000 | BOOST_CHECK(gjk_polyak.getNumIterations() < max_iterations); |
| 193 | } | ||
| 194 | 31 | } | |
| 195 | |||
| 196 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(ellipsoid_ellipsoid) { |
| 197 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.3), Scalar(0.4), Scalar(0.5)); |
| 198 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 199 | |||
| 200 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, ellipsoid1); |
| 201 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, ellipsoid1); |
| 202 | 2 | } | |
| 203 | |||
| 204 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(ellipsoid_capsule) { |
| 205 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.5), Scalar(0.4), Scalar(0.3)); |
| 206 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 207 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Capsule capsule0 = Capsule(Scalar(0.1), Scalar(0.3)); |
| 208 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Capsule capsule1 = Capsule(Scalar(1.1), Scalar(1.3)); |
| 209 | |||
| 210 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, capsule0); |
| 211 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, capsule1); |
| 212 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid1, capsule0); |
| 213 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid1, capsule1); |
| 214 | 2 | } | |
| 215 | |||
| 216 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(ellipsoid_box) { |
| 217 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.5), Scalar(0.4), Scalar(0.3)); |
| 218 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 219 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box0 = Box(Scalar(0.1), Scalar(0.2), Scalar(0.3)); |
| 220 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box1 = Box(Scalar(1.1), Scalar(1.2), Scalar(1.3)); |
| 221 | |||
| 222 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, box0); |
| 223 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, box1); |
| 224 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid1, box0); |
| 225 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid1, box1); |
| 226 | 2 | } | |
| 227 | |||
| 228 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(ellipsoid_mesh) { |
| 229 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.5), Scalar(0.4), Scalar(0.3)); |
| 230 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 231 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0); |
| 232 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx1 = constructPolytopeFromEllipsoid(ellipsoid1); |
| 233 | |||
| 234 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, cvx0); |
| 235 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid0, cvx1); |
| 236 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid1, cvx0); |
| 237 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(ellipsoid1, cvx1); |
| 238 | 2 | } | |
| 239 | |||
| 240 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(capsule_mesh) { |
| 241 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.5), Scalar(0.4), Scalar(0.3)); |
| 242 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 243 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0); |
| 244 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx1 = constructPolytopeFromEllipsoid(ellipsoid1); |
| 245 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Capsule capsule0 = Capsule(Scalar(0.1), Scalar(0.3)); |
| 246 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Capsule capsule1 = Capsule(Scalar(1.1), Scalar(1.3)); |
| 247 | |||
| 248 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule0, cvx0); |
| 249 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule0, cvx1); |
| 250 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule1, cvx0); |
| 251 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule1, cvx1); |
| 252 | 2 | } | |
| 253 | |||
| 254 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(capsule_capsule) { |
| 255 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Capsule capsule0 = Capsule(Scalar(0.1), Scalar(0.3)); |
| 256 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Capsule capsule1 = Capsule(Scalar(1.1), Scalar(1.3)); |
| 257 | |||
| 258 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule0, capsule0); |
| 259 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule1, capsule1); |
| 260 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(capsule0, capsule1); |
| 261 | 2 | } | |
| 262 | |||
| 263 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(box_box) { |
| 264 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box0 = Box(Scalar(0.1), Scalar(0.2), Scalar(0.3)); |
| 265 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box1 = Box(Scalar(1.1), Scalar(1.2), Scalar(1.3)); |
| 266 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box0, box0); |
| 267 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box0, box1); |
| 268 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box1, box1); |
| 269 | 2 | } | |
| 270 | |||
| 271 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(box_mesh) { |
| 272 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box0 = Box(Scalar(0.1), Scalar(0.2), Scalar(0.3)); |
| 273 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box1 = Box(Scalar(1.1), Scalar(1.2), Scalar(1.3)); |
| 274 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.5), Scalar(0.4), Scalar(0.3)); |
| 275 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 276 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0); |
| 277 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx1 = constructPolytopeFromEllipsoid(ellipsoid1); |
| 278 | |||
| 279 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box0, cvx0); |
| 280 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box0, cvx1); |
| 281 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box1, cvx0); |
| 282 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(box1, cvx1); |
| 283 | 2 | } | |
| 284 | |||
| 285 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(mesh_mesh) { |
| 286 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid0 = Ellipsoid(Scalar(0.5), Scalar(0.4), Scalar(0.3)); |
| 287 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Ellipsoid ellipsoid1 = Ellipsoid(Scalar(1.5), Scalar(1.4), Scalar(1.3)); |
| 288 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0); |
| 289 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Triangle32> cvx1 = constructPolytopeFromEllipsoid(ellipsoid1); |
| 290 | |||
| 291 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(cvx0, cvx0); |
| 292 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(cvx0, cvx1); |
| 293 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_accelerated_gjk(cvx1, cvx1); |
| 294 | 2 | } | |
| 295 |