Directory: | ./ |
---|---|
File: | test/normal_and_nearest_points.cpp |
Date: | 2025-04-01 09:23:31 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 435 | 438 | 99.3% |
Branches: | 1750 | 3480 | 50.3% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | * Software License Agreement (BSD License) | ||
3 | * | ||
4 | * Copyright (c) 2022-2024, 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_NORMAL_AND_NEAREST_POINTS | ||
38 | #include <boost/test/included/unit_test.hpp> | ||
39 | |||
40 | #include "coal/fwd.hh" | ||
41 | #include "coal/shape/geometric_shapes.h" | ||
42 | #include "coal/collision_data.h" | ||
43 | #include "coal/BV/OBBRSS.h" | ||
44 | #include "coal/BVH/BVH_model.h" | ||
45 | #include "coal/shape/geometric_shape_to_BVH_model.h" | ||
46 | |||
47 | #include "utility.h" | ||
48 | |||
49 | using namespace coal; | ||
50 | typedef Eigen::Vector2d Vec2d; | ||
51 | |||
52 | // This test suite is designed to operate on any pair of primitive shapes: | ||
53 | // spheres, capsules, boxes, ellipsoids, cones, cylinders, planes, halfspaces, | ||
54 | // convex meshes. Do not use this file for BVH, octree etc. It would not make | ||
55 | // sense. | ||
56 | |||
57 | // This test is designed to check if the normal and the nearest points | ||
58 | // are properly handled as defined in DistanceResult::normal. | ||
59 | // Regardless of wether or not the two shapes are in intersection, regardless of | ||
60 | // whether `collide` or `distance` is called: | ||
61 | // --> we denote `dist` the (signed) distance that separates the two shapes | ||
62 | // --> we denote `p1` and `p2` their nearest_points (witness points) | ||
63 | // --> the `normal` should always point from shape 1 to shape 2, i.e we should | ||
64 | // always have: | normal = sign(dist) * (p2 - p1).normalized() | ||
65 | // | p2 = p1 + dist * normal | ||
66 | // Thus: | ||
67 | // --> if o1 and o2 are not in collision, translating o2 by vector | ||
68 | // `-(dist + eps) * normal` should bring them in collision (eps > 0). | ||
69 | // --> if o1 and o2 are in collision, translating o2 by vector | ||
70 | // `-(dist - eps)) * normal` should separate them (eps > 0). | ||
71 | // --> finally, if abs(dist) > 0, we should have: | ||
72 | // normal = sign(dist) * (p2 - p1).normalized() | ||
73 | // p2 = p1 + dist * normal | ||
74 | template <typename ShapeType1, typename ShapeType2> | ||
75 | 864 | void test_normal_and_nearest_points( | |
76 | const ShapeType1& o1, const ShapeType2& o2, | ||
77 | size_t gjk_max_iterations = GJK_DEFAULT_MAX_ITERATIONS, | ||
78 | Scalar gjk_tolerance = GJK_DEFAULT_TOLERANCE, | ||
79 | size_t epa_max_iterations = EPA_DEFAULT_MAX_ITERATIONS, | ||
80 | Scalar epa_tolerance = EPA_DEFAULT_TOLERANCE) { | ||
81 | // Generate random poses for o2 | ||
82 | #ifndef NDEBUG // if debug mode | ||
83 | 864 | std::size_t n = 10; | |
84 | #else | ||
85 | size_t n = 1000; | ||
86 | #endif | ||
87 | // We want to make sure we generate poses that are in collision | ||
88 | // so we take a relatively small extent for the random poses | ||
89 | 864 | Scalar extents[] = {-1.5, -1.5, -1.5, 1.5, 1.5, 1.5}; | |
90 | 864 | std::vector<Transform3s> transforms; | |
91 |
1/2✓ Branch 1 taken 432 times.
✗ Branch 2 not taken.
|
864 | generateRandomTransforms(extents, transforms, n); |
92 |
1/2✓ Branch 1 taken 432 times.
✗ Branch 2 not taken.
|
864 | Transform3s tf1 = Transform3s::Identity(); |
93 | |||
94 |
1/2✓ Branch 1 taken 432 times.
✗ Branch 2 not taken.
|
864 | CollisionRequest colreq; |
95 | 864 | colreq.distance_upper_bound = std::numeric_limits<Scalar>::max(); | |
96 | // For strictly convex shapes, the default tolerance of EPA is way too low. | ||
97 | // Because EPA is basically trying to fit a polytope to a strictly convex | ||
98 | // surface, it might take it a lot of iterations to converge to a low | ||
99 | // tolerance. A solution is to increase the number of iterations and the | ||
100 | // tolerance (and/or increase the number of faces and vertices EPA is allowed | ||
101 | // to work with). | ||
102 | 864 | colreq.gjk_max_iterations = gjk_max_iterations; | |
103 | 864 | colreq.gjk_tolerance = gjk_tolerance; | |
104 | 864 | colreq.epa_max_iterations = epa_max_iterations; | |
105 | 864 | colreq.epa_tolerance = epa_tolerance; | |
106 |
1/2✓ Branch 1 taken 432 times.
✗ Branch 2 not taken.
|
864 | DistanceRequest distreq; |
107 | 864 | distreq.gjk_max_iterations = gjk_max_iterations; | |
108 | 864 | distreq.gjk_tolerance = gjk_tolerance; | |
109 | 864 | distreq.epa_max_iterations = epa_max_iterations; | |
110 | 864 | distreq.epa_tolerance = epa_tolerance; | |
111 | |||
112 |
2/2✓ Branch 1 taken 4320 times.
✓ Branch 2 taken 432 times.
|
9504 | for (size_t i = 0; i < n; i++) { |
113 | // Run both `distance` and `collide`. | ||
114 | // Since CollisionRequest::distance_lower_bound is set to infinity, | ||
115 | // these functions should agree on the results regardless of collision or | ||
116 | // not. | ||
117 |
1/2✓ Branch 2 taken 4320 times.
✗ Branch 3 not taken.
|
8640 | Transform3s tf2 = transforms[i]; |
118 |
1/2✓ Branch 1 taken 4320 times.
✗ Branch 2 not taken.
|
8640 | CollisionResult colres; |
119 |
1/2✓ Branch 2 taken 4320 times.
✗ Branch 3 not taken.
|
8640 | DistanceResult distres; |
120 |
1/2✓ Branch 1 taken 4320 times.
✗ Branch 2 not taken.
|
8640 | size_t col = collide(&o1, tf1, &o2, tf2, colreq, colres); |
121 |
1/2✓ Branch 1 taken 4320 times.
✗ Branch 2 not taken.
|
8640 | Scalar dist = distance(&o1, tf1, &o2, tf2, distreq, distres); |
122 | |||
123 | 8640 | const Scalar dummy_precision(100 * std::numeric_limits<Scalar>::epsilon()); | |
124 |
2/2✓ Branch 0 taken 1884 times.
✓ Branch 1 taken 2436 times.
|
8640 | if (col) { |
125 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1884 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1884 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1884 times.
|
3768 | BOOST_CHECK(dist <= 0.); |
126 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1884 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1884 times.
|
3768 | BOOST_CHECK_CLOSE(dist, distres.min_distance, dummy_precision); |
127 |
2/4✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1884 times.
✗ Branch 5 not taken.
|
3768 | Contact contact = colres.getContact(0); |
128 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1884 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1884 times.
|
3768 | BOOST_CHECK_CLOSE(dist, contact.penetration_depth, dummy_precision); |
129 | |||
130 |
1/2✓ Branch 2 taken 1884 times.
✗ Branch 3 not taken.
|
3768 | Vec3s cp1 = contact.nearest_points[0]; |
131 |
16/32✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 1884 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 1884 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 1884 times.
✗ Branch 36 not taken.
✓ Branch 39 taken 1884 times.
✗ Branch 40 not taken.
✓ Branch 42 taken 1884 times.
✗ Branch 43 not taken.
✓ Branch 45 taken 1884 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1884 times.
✗ Branch 49 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(cp1, distres.nearest_points[0], dummy_precision); |
132 | |||
133 |
1/2✓ Branch 2 taken 1884 times.
✗ Branch 3 not taken.
|
3768 | Vec3s cp2 = contact.nearest_points[1]; |
134 |
16/32✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 1884 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 1884 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 1884 times.
✗ Branch 36 not taken.
✓ Branch 39 taken 1884 times.
✗ Branch 40 not taken.
✓ Branch 42 taken 1884 times.
✗ Branch 43 not taken.
✓ Branch 45 taken 1884 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1884 times.
✗ Branch 49 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(cp2, distres.nearest_points[1], dummy_precision); |
135 |
8/16✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1884 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1884 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1884 times.
|
3768 | BOOST_CHECK_CLOSE(contact.penetration_depth, -(cp2 - cp1).norm(), |
136 | epa_tolerance); | ||
137 |
20/40✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1884 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1884 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1884 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1884 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1884 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1884 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1884 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1884 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1884 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1884 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1884 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(cp1, cp2 - dist * distres.normal, epa_tolerance); |
138 | |||
139 |
2/4✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1884 times.
✗ Branch 5 not taken.
|
3768 | Vec3s separation_vector = contact.penetration_depth * contact.normal; |
140 |
18/36✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1884 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1884 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1884 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1884 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1884 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1884 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1884 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1884 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1884 times.
✗ Branch 53 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(separation_vector, cp2 - cp1, epa_tolerance); |
141 | |||
142 |
1/2✓ Branch 0 taken 1884 times.
✗ Branch 1 not taken.
|
3768 | if (dist < 0) { |
143 |
22/44✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1884 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1884 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1884 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1884 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1884 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1884 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1884 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1884 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1884 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1884 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1884 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1884 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1884 times.
✗ Branch 65 not taken.
✗ Branch 75 not taken.
✓ Branch 76 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(contact.normal, -(cp2 - cp1).normalized(), |
144 | epa_tolerance); | ||
145 | } | ||
146 | |||
147 | // Separate the shapes | ||
148 |
1/2✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
|
3768 | Transform3s new_tf1 = tf1; |
149 | 3768 | Scalar eps = Scalar(1e-2); | |
150 |
4/8✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1884 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
|
3768 | new_tf1.setTranslation(tf1.getTranslation() + separation_vector - |
151 | eps * contact.normal); | ||
152 |
1/2✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
|
3768 | CollisionResult new_colres; |
153 |
1/2✓ Branch 2 taken 1884 times.
✗ Branch 3 not taken.
|
3768 | DistanceResult new_distres; |
154 |
1/2✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
|
3768 | size_t new_col = collide(&o1, new_tf1, &o2, tf2, colreq, new_colres); |
155 |
1/2✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
|
3768 | Scalar new_dist = distance(&o1, new_tf1, &o2, tf2, distreq, new_distres); |
156 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1884 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1884 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1884 times.
|
3768 | BOOST_CHECK(new_dist > 0); |
157 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1884 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1884 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1884 times.
|
3768 | BOOST_CHECK(!new_col); |
158 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1884 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1884 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1884 times.
|
3768 | BOOST_CHECK(!new_colres.isCollision()); |
159 |
6/12✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1884 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1884 times.
|
3768 | BOOST_CHECK_CLOSE(new_colres.distance_lower_bound, new_dist, |
160 | epa_tolerance); | ||
161 |
1/2✓ Branch 2 taken 1884 times.
✗ Branch 3 not taken.
|
3768 | Vec3s new_cp1 = new_distres.nearest_points[0]; |
162 |
1/2✓ Branch 2 taken 1884 times.
✗ Branch 3 not taken.
|
3768 | Vec3s new_cp2 = new_distres.nearest_points[1]; |
163 |
8/16✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1884 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1884 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1884 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1884 times.
|
3768 | BOOST_CHECK_CLOSE(new_dist, (new_cp1 - new_cp2).norm(), epa_tolerance); |
164 |
20/40✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1884 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1884 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1884 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1884 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1884 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1884 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1884 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1884 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1884 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1884 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1884 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(new_cp1, new_cp2 - new_dist * new_distres.normal, |
165 | epa_tolerance); | ||
166 | |||
167 |
2/4✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1884 times.
✗ Branch 5 not taken.
|
3768 | Vec3s new_separation_vector = new_dist * new_distres.normal; |
168 |
18/36✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1884 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1884 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1884 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1884 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1884 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1884 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1884 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1884 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1884 times.
✗ Branch 53 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(new_separation_vector, new_cp2 - new_cp1, |
169 | epa_tolerance); | ||
170 | |||
171 |
1/2✓ Branch 0 taken 1884 times.
✗ Branch 1 not taken.
|
3768 | if (new_dist > 0) { |
172 |
20/40✓ Branch 1 taken 1884 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1884 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1884 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1884 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1884 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1884 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1884 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1884 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1884 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1884 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1884 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1884 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1884 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1884 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1884 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1884 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1884 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1884 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1884 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 1884 times.
|
3768 | EIGEN_VECTOR_IS_APPROX(new_distres.normal, |
173 | (new_cp2 - new_cp1).normalized(), gjk_tolerance); | ||
174 | } | ||
175 | 3768 | } else { | |
176 |
6/12✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 2436 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 2436 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 2436 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2436 times.
|
4872 | BOOST_CHECK(dist >= 0.); |
177 |
6/12✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2436 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 2436 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2436 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2436 times.
|
4872 | BOOST_CHECK_CLOSE(distres.min_distance, dist, dummy_precision); |
178 |
6/12✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2436 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 2436 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2436 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2436 times.
|
4872 | BOOST_CHECK_CLOSE(dist, colres.distance_lower_bound, dummy_precision); |
179 | |||
180 |
1/2✓ Branch 2 taken 2436 times.
✗ Branch 3 not taken.
|
4872 | Vec3s cp1 = distres.nearest_points[0]; |
181 |
1/2✓ Branch 2 taken 2436 times.
✗ Branch 3 not taken.
|
4872 | Vec3s cp2 = distres.nearest_points[1]; |
182 |
8/16✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2436 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 2436 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 2436 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 2436 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2436 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2436 times.
|
4872 | BOOST_CHECK_CLOSE(dist, (cp1 - cp2).norm(), gjk_tolerance); |
183 |
20/40✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2436 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2436 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2436 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2436 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2436 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2436 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2436 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2436 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2436 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2436 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2436 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2436 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2436 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2436 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2436 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 2436 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 2436 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 2436 times.
|
4872 | EIGEN_VECTOR_IS_APPROX(cp1, cp2 - dist * distres.normal, gjk_tolerance); |
184 | |||
185 |
2/4✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2436 times.
✗ Branch 5 not taken.
|
4872 | Vec3s separation_vector = dist * distres.normal; |
186 |
18/36✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2436 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2436 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2436 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2436 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2436 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2436 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2436 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2436 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2436 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2436 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2436 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2436 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2436 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2436 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2436 times.
✗ Branch 53 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 2436 times.
|
4872 | EIGEN_VECTOR_IS_APPROX(separation_vector, cp2 - cp1, gjk_tolerance); |
187 | |||
188 |
1/2✓ Branch 0 taken 2436 times.
✗ Branch 1 not taken.
|
4872 | if (dist > 0) { |
189 |
20/40✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2436 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2436 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2436 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2436 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2436 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2436 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2436 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2436 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2436 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2436 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2436 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2436 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2436 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2436 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2436 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 2436 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 2436 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 2436 times.
|
4872 | EIGEN_VECTOR_IS_APPROX(distres.normal, (cp2 - cp1).normalized(), |
190 | gjk_tolerance); | ||
191 | } | ||
192 | |||
193 | // Bring the shapes in collision | ||
194 | // We actually can't guarantee that the shapes will be in collision. | ||
195 | // Suppose you have two disjoing cones, which witness points are the tips | ||
196 | // of the cones. | ||
197 | // If you translate one of the cones by the separation vector and it | ||
198 | // happens to be parallel to the axis of the cone, the two shapes will | ||
199 | // still be disjoint. | ||
200 | 4872 | Scalar eps = Scalar(1e-2); | |
201 |
1/2✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
|
4872 | Transform3s new_tf1 = tf1; |
202 |
4/8✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2436 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 2436 times.
✗ Branch 12 not taken.
|
4872 | new_tf1.setTranslation(tf1.getTranslation() + separation_vector + |
203 | eps * distres.normal); | ||
204 |
1/2✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
|
4872 | CollisionResult new_colres; |
205 |
1/2✓ Branch 2 taken 2436 times.
✗ Branch 3 not taken.
|
4872 | DistanceResult new_distres; |
206 |
1/2✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
|
4872 | collide(&o1, new_tf1, &o2, tf2, colreq, new_colres); |
207 |
1/2✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
|
4872 | Scalar new_dist = distance(&o1, new_tf1, &o2, tf2, distreq, new_distres); |
208 |
6/12✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 2436 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 2436 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 2436 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2436 times.
|
4872 | BOOST_CHECK(new_dist < dist); |
209 |
6/12✓ Branch 1 taken 2436 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2436 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2436 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 2436 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2436 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2436 times.
|
4872 | BOOST_CHECK_CLOSE(new_colres.distance_lower_bound, new_dist, |
210 | dummy_precision); | ||
211 | // tolerance | ||
212 |
2/2✓ Branch 1 taken 2435 times.
✓ Branch 2 taken 1 times.
|
4872 | if (new_colres.isCollision()) { |
213 |
2/4✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2435 times.
✗ Branch 5 not taken.
|
4870 | Contact contact = new_colres.getContact(0); |
214 |
1/2✓ Branch 2 taken 2435 times.
✗ Branch 3 not taken.
|
4870 | Vec3s new_cp1 = contact.nearest_points[0]; |
215 |
16/32✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2435 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2435 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2435 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2435 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2435 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2435 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2435 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 2435 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 2435 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 2435 times.
✗ Branch 36 not taken.
✓ Branch 39 taken 2435 times.
✗ Branch 40 not taken.
✓ Branch 42 taken 2435 times.
✗ Branch 43 not taken.
✓ Branch 45 taken 2435 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 2435 times.
✗ Branch 49 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2435 times.
|
4870 | EIGEN_VECTOR_IS_APPROX(new_cp1, new_distres.nearest_points[0], |
216 | dummy_precision); | ||
217 | |||
218 |
1/2✓ Branch 2 taken 2435 times.
✗ Branch 3 not taken.
|
4870 | Vec3s new_cp2 = contact.nearest_points[1]; |
219 |
16/32✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2435 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2435 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2435 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2435 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2435 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2435 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2435 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 2435 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 2435 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 2435 times.
✗ Branch 36 not taken.
✓ Branch 39 taken 2435 times.
✗ Branch 40 not taken.
✓ Branch 42 taken 2435 times.
✗ Branch 43 not taken.
✓ Branch 45 taken 2435 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 2435 times.
✗ Branch 49 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2435 times.
|
4870 | EIGEN_VECTOR_IS_APPROX(new_cp2, new_distres.nearest_points[1], |
220 | dummy_precision); | ||
221 |
8/16✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2435 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2435 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 2435 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 2435 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 2435 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2435 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2435 times.
|
4870 | BOOST_CHECK_CLOSE(contact.penetration_depth, |
222 | -(new_cp2 - new_cp1).norm(), epa_tolerance); | ||
223 |
20/40✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2435 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2435 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2435 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2435 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2435 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2435 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2435 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2435 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2435 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2435 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2435 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2435 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2435 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2435 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2435 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2435 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 2435 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 2435 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 2435 times.
|
4870 | EIGEN_VECTOR_IS_APPROX(new_cp1, new_cp2 - new_dist * new_distres.normal, |
224 | epa_tolerance); | ||
225 | |||
226 |
2/4✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2435 times.
✗ Branch 5 not taken.
|
4870 | Vec3s new_separation_vector = |
227 | contact.penetration_depth * contact.normal; | ||
228 |
18/36✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2435 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2435 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2435 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2435 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2435 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2435 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2435 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2435 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2435 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2435 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2435 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2435 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2435 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2435 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2435 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2435 times.
✗ Branch 53 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 2435 times.
|
4870 | EIGEN_VECTOR_IS_APPROX(new_separation_vector, new_cp2 - new_cp1, |
229 | epa_tolerance); | ||
230 | |||
231 |
1/2✓ Branch 0 taken 2435 times.
✗ Branch 1 not taken.
|
4870 | if (new_dist < 0) { |
232 |
22/44✓ Branch 1 taken 2435 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2435 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 2435 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2435 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2435 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2435 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2435 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2435 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2435 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2435 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2435 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2435 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2435 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2435 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2435 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2435 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2435 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 2435 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 2435 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 2435 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 2435 times.
✗ Branch 65 not taken.
✗ Branch 75 not taken.
✓ Branch 76 taken 2435 times.
|
4870 | EIGEN_VECTOR_IS_APPROX( |
233 | contact.normal, -(new_cp2 - new_cp1).normalized(), epa_tolerance); | ||
234 | } | ||
235 | } | ||
236 | 4872 | } | |
237 | } | ||
238 | 864 | } | |
239 | |||
240 | template <int VecSize> | ||
241 | 444 | Eigen::Matrix<Scalar, VecSize, 1> generateRandomVector(Scalar min, Scalar max) { | |
242 | typedef Eigen::Matrix<Scalar, VecSize, 1> VecType; | ||
243 | // Generate a random vector in the [min, max] range | ||
244 |
7/14✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 222 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 222 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 222 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 222 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 222 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 222 times.
✗ Branch 20 not taken.
|
444 | VecType v = VecType::Random() * (max - min) * 0.5 + |
245 |
1/2✓ Branch 1 taken 222 times.
✗ Branch 2 not taken.
|
444 | VecType::Ones() * (max + min) * 0.5; |
246 | 444 | return v; | |
247 | } | ||
248 | |||
249 | 290 | Scalar generateRandomNumber(Scalar min, Scalar max) { | |
250 | 290 | Scalar r = static_cast<Scalar>(rand()) / static_cast<Scalar>(RAND_MAX); | |
251 | 290 | r = 2 * r - 1; | |
252 | 290 | const Scalar half(0.5); | |
253 | 290 | return r * (max - min) * half + (max + min) * half; | |
254 | } | ||
255 | |||
256 |
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(test_normal_and_nearest_points_sphere_sphere) { |
257 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
258 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s radii = generateRandomVector<2>(Scalar(0.05), 1); |
259 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(radii(0))); |
260 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Sphere> o2(new Sphere(radii(1))); |
261 | |||
262 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
263 | 20 | } | |
264 | 2 | } | |
265 | |||
266 |
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(test_normal_and_nearest_points_sphere_capsule) { |
267 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
268 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s radii = generateRandomVector<2>(Scalar(0.05), 1); |
269 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
270 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(radii(0))); |
271 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Capsule> o2(new Capsule(radii(1), h)); |
272 | |||
273 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
274 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
275 | 20 | } | |
276 | 2 | } | |
277 | |||
278 |
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(test_normal_and_nearest_points_sphere_box) { |
279 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
280 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Box> o1(new Box(generateRandomVector<3>(Scalar(0.05), 1))); |
281 |
3/6✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
|
20 | shared_ptr<Sphere> o2(new Sphere(generateRandomNumber(Scalar(0.05), 1))); |
282 | |||
283 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
284 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
285 | 20 | } | |
286 | 2 | } | |
287 | |||
288 |
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(test_normal_and_nearest_points_mesh_mesh) { |
289 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
290 | Convex<Triangle> o1_ = constructPolytopeFromEllipsoid( | ||
291 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
292 | shared_ptr<Convex<Triangle>> o1(new Convex<Triangle>( | ||
293 |
3/6✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
|
40 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
294 | Convex<Triangle> o2_ = constructPolytopeFromEllipsoid( | ||
295 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
296 | shared_ptr<Convex<Triangle>> o2(new Convex<Triangle>( | ||
297 |
3/6✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
|
40 | o2_.points, o2_.num_points, o2_.polygons, o2_.num_polygons)); |
298 | |||
299 | 20 | size_t gjk_max_iterations = GJK_DEFAULT_MAX_ITERATIONS; | |
300 | 20 | Scalar gjk_tolerance = GJK_DEFAULT_TOLERANCE; | |
301 | 20 | size_t epa_max_iterations = EPA_DEFAULT_MAX_ITERATIONS; | |
302 | 20 | Scalar epa_tolerance = EPA_DEFAULT_TOLERANCE; | |
303 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get(), gjk_max_iterations, |
304 | gjk_tolerance, epa_max_iterations, | ||
305 | epa_tolerance); | ||
306 | 20 | } | |
307 | 2 | } | |
308 | |||
309 |
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(test_normal_and_nearest_points_mesh_box) { |
310 | Convex<Triangle> o1_ = constructPolytopeFromEllipsoid( | ||
311 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
312 | shared_ptr<Convex<Triangle>> o1(new Convex<Triangle>( | ||
313 |
3/6✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
|
4 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
314 |
4/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
|
2 | shared_ptr<Box> o2(new Box(generateRandomVector<3>(Scalar(0.05), 1))); |
315 | |||
316 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
317 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
318 | 2 | } | |
319 | |||
320 |
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(test_normal_and_nearest_points_mesh_ellipsoid) { |
321 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
322 | Convex<Triangle> o1_ = constructPolytopeFromEllipsoid( | ||
323 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
324 | shared_ptr<Convex<Triangle>> o1(new Convex<Triangle>( | ||
325 |
3/6✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
|
40 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
326 | shared_ptr<Ellipsoid> o2( | ||
327 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
328 | |||
329 | 20 | Scalar gjk_tolerance = Scalar(1e-6); | |
330 | // With EPA's tolerance set at 1e-3, the precision on the normal, contact | ||
331 | // points and penetration depth is on the order of the milimeter. However, | ||
332 | // EPA (currently) cannot converge to lower tolerances on strictly convex | ||
333 | // shapes in a reasonable amount of iterations. | ||
334 | 20 | Scalar epa_tolerance = Scalar(1e-3); | |
335 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get(), |
336 | GJK_DEFAULT_MAX_ITERATIONS, gjk_tolerance, | ||
337 | EPA_DEFAULT_MAX_ITERATIONS, epa_tolerance); | ||
338 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get(), |
339 | GJK_DEFAULT_MAX_ITERATIONS, gjk_tolerance, | ||
340 | EPA_DEFAULT_MAX_ITERATIONS, epa_tolerance); | ||
341 | 20 | } | |
342 | 2 | } | |
343 | |||
344 |
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(test_normal_and_nearest_points_ellipsoid_ellipsoid) { |
345 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
346 | shared_ptr<Ellipsoid> o1( | ||
347 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1.0))); |
348 | shared_ptr<Ellipsoid> o2( | ||
349 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1.0))); |
350 | |||
351 | 20 | size_t gjk_max_iterations = GJK_DEFAULT_MAX_ITERATIONS; | |
352 | 20 | Scalar gjk_tolerance = Scalar(1e-6); | |
353 | // With EPA's tolerance set at 1e-3, the precision on the normal, contact | ||
354 | // points and penetration depth is on the order of the milimeter. However, | ||
355 | // EPA (currently) cannot converge to lower tolerances on strictly convex | ||
356 | // shapes in a reasonable amount of iterations. | ||
357 | 20 | size_t epa_max_iterations = 250; | |
358 | 20 | Scalar epa_tolerance = Scalar(1e-3); | |
359 | // For EPA on ellipsoids, we need to increase the number of iterations in | ||
360 | // this test. This is simply because this test checks **a lot** of cases and | ||
361 | // it can generate some of the worst cases for EPA. We don't want to | ||
362 | // increase the tolerance too much because otherwise the test would not | ||
363 | // work. | ||
364 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get(), gjk_max_iterations, |
365 | gjk_tolerance, epa_max_iterations, | ||
366 | epa_tolerance); | ||
367 | 20 | } | |
368 | 2 | } | |
369 | |||
370 |
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(test_normal_and_nearest_points_box_plane) { |
371 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
372 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Box> o1(new Box(generateRandomVector<3>(Scalar(0.05), 1))); |
373 | 20 | const Scalar half(0.5); | |
374 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
375 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
376 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
377 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Plane> o2(new Plane(n, offset)); |
378 | |||
379 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
380 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
381 | 20 | } | |
382 | 2 | } | |
383 | |||
384 |
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(test_normal_and_nearest_points_box_halfspace) { |
385 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
386 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Box> o1(new Box(generateRandomVector<3>(Scalar(0.05), 1))); |
387 | 20 | Scalar offset = Scalar(0.1); | |
388 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
389 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
390 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
391 | |||
392 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
393 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
394 | 20 | } | |
395 | 2 | } | |
396 | |||
397 |
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(test_normal_and_nearest_points_capsule_halfspace) { |
398 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
399 | 20 | Scalar r = generateRandomNumber(Scalar(0.05), 1); | |
400 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
401 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Capsule> o1(new Capsule(r, h)); |
402 | 20 | const Scalar half(0.5); | |
403 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
404 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
405 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
406 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
407 | |||
408 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
409 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
410 | 20 | } | |
411 | 2 | } | |
412 | |||
413 |
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(test_normal_and_nearest_points_sphere_halfspace) { |
414 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
415 |
3/6✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(generateRandomNumber(Scalar(0.05), 1))); |
416 | 20 | const Scalar half(0.5); | |
417 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
418 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
419 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
420 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
421 | |||
422 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
423 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
424 | 20 | } | |
425 | 2 | } | |
426 | |||
427 |
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(test_normal_and_nearest_points_sphere_plane) { |
428 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
429 |
3/6✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(generateRandomNumber(Scalar(0.05), 1))); |
430 | 20 | const Scalar half(0.5); | |
431 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
432 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
433 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
434 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Plane> o2(new Plane(n, offset)); |
435 | |||
436 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
437 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
438 | 20 | } | |
439 | 2 | } | |
440 | |||
441 |
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(test_normal_and_nearest_points_mesh_halfspace) { |
442 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
443 | Convex<Triangle> o1_ = constructPolytopeFromEllipsoid( | ||
444 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
445 | shared_ptr<Convex<Triangle>> o1(new Convex<Triangle>( | ||
446 |
3/6✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
|
40 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
447 | 20 | const Scalar half(0.5); | |
448 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
449 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
450 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
451 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
452 | |||
453 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
454 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
455 | 20 | } | |
456 | 2 | } | |
457 | |||
458 |
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(test_normal_and_nearest_points_cone_cylinder) { |
459 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
460 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s r = generateRandomVector<2>(Scalar(0.05), 1); |
461 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s h = generateRandomVector<2>(Scalar(0.15), 1); |
462 |
5/10✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
|
20 | shared_ptr<Cone> o1(new Cone(r(0), h(0))); |
463 |
5/10✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
|
20 | shared_ptr<Cylinder> o2(new Cylinder(r(1), h(1))); |
464 | |||
465 | 20 | size_t gjk_max_iterations = GJK_DEFAULT_MAX_ITERATIONS; | |
466 | 20 | Scalar gjk_tolerance = Scalar(1e-6); | |
467 | 20 | size_t epa_max_iterations = 250; | |
468 | 20 | Scalar epa_tolerance = Scalar(1e-3); | |
469 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get(), gjk_max_iterations, |
470 | gjk_tolerance, epa_max_iterations, | ||
471 | epa_tolerance); | ||
472 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get(), gjk_max_iterations, |
473 | gjk_tolerance, epa_max_iterations, | ||
474 | epa_tolerance); | ||
475 | 20 | } | |
476 | 2 | } | |
477 | |||
478 |
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(test_normal_and_nearest_points_cylinder_ellipsoid) { |
479 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
480 | shared_ptr<Ellipsoid> o1( | ||
481 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
482 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s r = generateRandomVector<2>(Scalar(0.05), 1); |
483 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s h = generateRandomVector<2>(Scalar(0.15), 1); |
484 |
5/10✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
|
20 | shared_ptr<Cylinder> o2(new Cylinder(r(1), h(1))); |
485 | |||
486 | 20 | size_t gjk_max_iterations = GJK_DEFAULT_MAX_ITERATIONS; | |
487 | 20 | Scalar gjk_tolerance = Scalar(1e-6); | |
488 | 20 | size_t epa_max_iterations = 250; | |
489 | 20 | Scalar epa_tolerance = Scalar(1e-3); | |
490 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get(), gjk_max_iterations, |
491 | gjk_tolerance, epa_max_iterations, | ||
492 | epa_tolerance); | ||
493 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get(), gjk_max_iterations, |
494 | gjk_tolerance, epa_max_iterations, | ||
495 | epa_tolerance); | ||
496 | 20 | } | |
497 | 2 | } | |
498 | |||
499 |
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(test_normal_and_nearest_points_cone_halfspace) { |
500 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
501 | 20 | Scalar r = generateRandomNumber(Scalar(0.05), 1); | |
502 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
503 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Cone> o1(new Cone(r, h)); |
504 | 20 | const Scalar half(0.5); | |
505 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
506 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
507 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
508 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
509 | |||
510 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
511 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
512 | 20 | } | |
513 | 2 | } | |
514 | |||
515 |
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(test_normal_and_nearest_points_cylinder_halfspace) { |
516 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
517 | 20 | Scalar r = generateRandomNumber(Scalar(0.05), 1); | |
518 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
519 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Cylinder> o1(new Cylinder(r, h)); |
520 | 20 | const Scalar half(0.5); | |
521 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
522 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
523 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
524 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
525 | |||
526 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
527 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
528 | 20 | } | |
529 | 2 | } | |
530 | |||
531 |
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(test_normal_and_nearest_points_cone_plane) { |
532 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
533 | 20 | Scalar r = generateRandomNumber(Scalar(0.05), 1); | |
534 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
535 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Cone> o1(new Cone(r, h)); |
536 | 20 | const Scalar half(0.5); | |
537 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
538 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
539 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
540 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Plane> o2(new Plane(n, offset)); |
541 | |||
542 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
543 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
544 | 20 | } | |
545 | 2 | } | |
546 | |||
547 |
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(test_normal_and_nearest_points_cylinder_plane) { |
548 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
549 | 20 | Scalar r = generateRandomNumber(Scalar(0.05), 1); | |
550 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
551 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Cylinder> o1(new Cylinder(r, h)); |
552 | 20 | const Scalar half(0.5); | |
553 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
554 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
555 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
556 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Plane> o2(new Plane(n, offset)); |
557 | |||
558 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
559 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
560 | 20 | } | |
561 | 2 | } | |
562 | |||
563 |
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(test_normal_and_nearest_points_capsule_plane) { |
564 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
565 | 20 | Scalar r = generateRandomNumber(Scalar(0.05), 1); | |
566 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
567 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Capsule> o1(new Capsule(r, h)); |
568 | 20 | const Scalar half(0.5); | |
569 | 20 | Scalar offset = generateRandomNumber(-half, half); | |
570 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
571 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
572 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Plane> o2(new Plane(n, offset)); |
573 | |||
574 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
575 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
576 | 20 | } | |
577 | 2 | } | |
578 | |||
579 |
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(test_normal_and_nearest_points_capsule_capsule) { |
580 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
581 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s r = generateRandomVector<2>(Scalar(0.05), 1); |
582 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s h = generateRandomVector<2>(Scalar(0.15), 1); |
583 |
5/10✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
|
20 | shared_ptr<Capsule> o1(new Capsule(r(0), h(0))); |
584 |
5/10✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10 times.
✗ Branch 14 not taken.
|
20 | shared_ptr<Capsule> o2(new Capsule(r(1), h(1))); |
585 | |||
586 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
587 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
588 | 20 | } | |
589 | 2 | } | |
590 | |||
591 |
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(test_normal_and_nearest_points_sphere_cylinder) { |
592 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
593 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | Vec2s r = generateRandomVector<2>(Scalar(0.05), 1); |
594 | 20 | Scalar h = generateRandomNumber(Scalar(0.15), 1); | |
595 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(r(0))); |
596 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | shared_ptr<Cylinder> o2(new Cylinder(r(1), h)); |
597 | |||
598 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
599 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
600 | 20 | } | |
601 | 2 | } | |
602 | |||
603 |
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(test_normal_and_nearest_points_ellipsoid_halfspace) { |
604 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
605 | 20 | Scalar offset = generateRandomNumber(Scalar(0.15), 1); | |
606 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
607 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
608 | shared_ptr<Ellipsoid> o1( | ||
609 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
610 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
611 | |||
612 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
613 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
614 | 20 | } | |
615 | 2 | } | |
616 | |||
617 |
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(test_normal_and_nearest_points_ellipsoid_plane) { |
618 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
22 | for (size_t i = 0; i < 10; ++i) { |
619 | 20 | Scalar offset = generateRandomNumber(Scalar(0.15), 1); | |
620 |
2/4✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
20 | Vec3s n = Vec3s::Random(); |
621 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
20 | n.normalize(); |
622 | shared_ptr<Ellipsoid> o1( | ||
623 |
4/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10 times.
✗ Branch 11 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
624 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
20 | shared_ptr<Plane> o2(new Plane(n, offset)); |
625 | |||
626 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o1.get(), *o2.get()); |
627 |
1/2✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
20 | test_normal_and_nearest_points(*o2.get(), *o1.get()); |
628 | 20 | } | |
629 | 2 | } | |
630 | |||
631 | 2 | void test_normal_and_nearest_points(const BVHModel<OBBRSS>& o1, | |
632 | const Halfspace& o2) { | ||
633 | // Generate random poses for o2 | ||
634 | #ifndef NDEBUG // if debug mode | ||
635 | 2 | std::size_t n = 1; | |
636 | #else | ||
637 | size_t n = 10000; | ||
638 | #endif | ||
639 | 2 | Scalar extents[] = {-2., -2., -2., 2., 2., 2.}; | |
640 | 2 | std::vector<Transform3s> transforms; | |
641 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | generateRandomTransforms(extents, transforms, n); |
642 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | Transform3s tf1 = Transform3s::Identity(); |
643 |
2/4✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
|
2 | transforms[0] = Transform3s::Identity(); |
644 | |||
645 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | CollisionRequest colreq; |
646 | 2 | colreq.distance_upper_bound = std::numeric_limits<Scalar>::max(); | |
647 | 2 | colreq.num_max_contacts = 100; | |
648 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | CollisionResult colres; |
649 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | DistanceRequest distreq; |
650 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
2 | DistanceResult distres; |
651 | |||
652 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
|
4 | for (size_t i = 0; i < n; i++) { |
653 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
2 | Transform3s tf2 = transforms[i]; |
654 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | colres.clear(); |
655 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | distres.clear(); |
656 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | size_t col = collide(&o1, tf1, &o2, tf2, colreq, colres); |
657 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
2 | Scalar dist = distance(&o1, tf1, &o2, tf2, distreq, distres); |
658 | |||
659 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2 | if (col) { |
660 |
6/12✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
|
2 | BOOST_CHECK(dist <= 0.); |
661 |
6/12✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
|
2 | BOOST_CHECK_CLOSE(dist, distres.min_distance, 1e-6); |
662 |
2/2✓ Branch 1 taken 22 times.
✓ Branch 2 taken 2 times.
|
24 | for (size_t c = 0; c < colres.numContacts(); c++) { |
663 |
2/4✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
|
22 | Contact contact = colres.getContact(c); |
664 |
6/12✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 22 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 22 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 22 times.
|
22 | BOOST_CHECK(contact.penetration_depth <= 0); |
665 |
6/12✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 22 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 22 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 22 times.
|
22 | BOOST_CHECK(contact.penetration_depth >= colres.distance_lower_bound); |
666 | |||
667 |
1/2✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
|
22 | Vec3s cp1 = contact.nearest_points[0]; |
668 |
1/2✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
|
22 | Vec3s cp2 = contact.nearest_points[1]; |
669 |
8/16✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 22 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 22 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 22 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 22 times.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 22 times.
|
22 | BOOST_CHECK_CLOSE(contact.penetration_depth, -(cp2 - cp1).norm(), 1e-6); |
670 |
20/40✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 22 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 22 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 22 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 22 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 22 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 22 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 22 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 22 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 22 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 22 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 22 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 22 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 22 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 22 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 22 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 22 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 22 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 22 times.
|
22 | EIGEN_VECTOR_IS_APPROX(cp1, |
671 | cp2 - contact.penetration_depth * contact.normal, | ||
672 | Scalar(1e-6)); | ||
673 | |||
674 |
2/4✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
|
22 | Vec3s separation_vector = contact.penetration_depth * contact.normal; |
675 |
18/36✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 22 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 22 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 22 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 22 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 22 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 22 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 22 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 22 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 22 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 22 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 22 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 22 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 22 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 22 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 22 times.
✗ Branch 53 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 22 times.
|
22 | EIGEN_VECTOR_IS_APPROX(separation_vector, cp2 - cp1, Scalar(1e-6)); |
676 | |||
677 |
1/2✓ Branch 0 taken 22 times.
✗ Branch 1 not taken.
|
22 | if (dist < 0) { |
678 |
22/44✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 22 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 22 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 22 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 22 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 22 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 22 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 22 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 22 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 22 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 22 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 22 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 22 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 22 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 22 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 22 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 22 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 22 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 22 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 22 times.
✗ Branch 65 not taken.
✗ Branch 75 not taken.
✓ Branch 76 taken 22 times.
|
22 | EIGEN_VECTOR_IS_APPROX(contact.normal, -(cp2 - cp1).normalized(), |
679 | Scalar(1e-6)); | ||
680 | } | ||
681 | } | ||
682 | } else { | ||
683 | ✗ | BOOST_CHECK(dist >= 0.); | |
684 | ✗ | BOOST_CHECK_CLOSE(distres.min_distance, dist, 1e-6); | |
685 | ✗ | BOOST_CHECK_CLOSE(dist, colres.distance_lower_bound, 1e-6); | |
686 | } | ||
687 | } | ||
688 | 2 | } | |
689 | |||
690 | 1 | void test_normal_and_nearest_points(const Halfspace& o1, | |
691 | const BVHModel<OBBRSS>& o2) { | ||
692 | 1 | test_normal_and_nearest_points(o2, o1); | |
693 | 1 | } | |
694 | |||
695 |
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(test_normal_and_nearest_points_bvh_halfspace) { |
696 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Box* box_ptr = new coal::Box(1, 1, 1); |
697 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | coal::CollisionGeometryPtr_t b1(box_ptr); |
698 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | BVHModel<coal::OBBRSS> o1 = BVHModel<OBBRSS>(); |
699 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | generateBVHModel(o1, *box_ptr, Transform3s()); |
700 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | o1.buildConvexRepresentation(false); |
701 | |||
702 | 2 | Scalar offset = Scalar(0.1); | |
703 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Vec3s n = Vec3s::Random(); |
704 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | n.normalize(); |
705 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | shared_ptr<Halfspace> o2(new Halfspace(n, offset)); |
706 | |||
707 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | test_normal_and_nearest_points(o1, *o2.get()); |
708 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | test_normal_and_nearest_points(*o2.get(), o1); |
709 | 2 | } | |
710 |