GCC Code Coverage Report


Directory: ./
File: test/accelerated_gjk.cpp
Date: 2025-04-01 09:23:31
Exec Total Coverage
Lines: 163 163 100.0%
Branches: 643 1284 50.1%

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::Convex;
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::Triangle;
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 Convex<Triangle> 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 Convex<Triangle> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0);
232
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Convex<Triangle> 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 Convex<Triangle> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0);
244
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Convex<Triangle> 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 Convex<Triangle> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0);
277
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Convex<Triangle> 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 Convex<Triangle> cvx0 = constructPolytopeFromEllipsoid(ellipsoid0);
289
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Convex<Triangle> 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