| 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(radii(0))); |
| 260 |
4/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 12 not taken.
✗ Branch 13 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(radii(0))); |
| 271 |
4/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 12 not taken.
✗ Branch 13 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | shared_ptr<Box> o1(new Box(generateRandomVector<3>(Scalar(0.05), 1))); |
| 281 |
3/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 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 | ConvexTpl<Triangle32> 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<ConvexTpl<Triangle32>> o1(new ConvexTpl<Triangle32>( | ||
| 293 |
3/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
| 294 | ConvexTpl<Triangle32> 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<ConvexTpl<Triangle32>> o2(new ConvexTpl<Triangle32>( | ||
| 297 |
3/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | 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 | ConvexTpl<Triangle32> 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<ConvexTpl<Triangle32>> o1(new ConvexTpl<Triangle32>( | ||
| 313 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
2 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
| 314 |
4/10✓ 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.
✗ Branch 12 not taken.
✗ Branch 13 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 | ConvexTpl<Triangle32> 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<ConvexTpl<Triangle32>> o1(new ConvexTpl<Triangle32>( | ||
| 325 |
3/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | o1_.points, o1_.num_points, o1_.polygons, o1_.num_polygons)); |
| 326 | shared_ptr<Ellipsoid> o2( | ||
| 327 |
4/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 12 not taken.
✗ Branch 13 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1.0))); |
| 348 | shared_ptr<Ellipsoid> o2( | ||
| 349 |
4/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 12 not taken.
✗ Branch 13 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/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 12 not taken.
✗ Branch 13 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/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 9 not taken.
✗ Branch 10 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/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 12 not taken.
✗ Branch 13 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 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/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 9 not taken.
✗ Branch 10 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/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 10 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 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/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 9 not taken.
✗ Branch 10 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 | ConvexTpl<Triangle32> 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<ConvexTpl<Triangle32>> o1(new ConvexTpl<Triangle32>( | ||
| 446 |
3/8✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 10 times.
✗ Branch 10 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | 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/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 9 not taken.
✗ Branch 10 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/12✓ 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.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | shared_ptr<Cone> o1(new Cone(r(0), h(0))); |
| 463 |
5/12✓ 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.
✗ Branch 15 not taken.
✗ Branch 16 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/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 12 not taken.
✗ Branch 13 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/12✓ 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.
✗ Branch 15 not taken.
✗ Branch 16 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/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 9 not taken.
✗ Branch 10 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/12✓ 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.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | shared_ptr<Capsule> o1(new Capsule(r(0), h(0))); |
| 584 |
5/12✓ 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.
✗ Branch 15 not taken.
✗ Branch 16 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | shared_ptr<Sphere> o1(new Sphere(r(0))); |
| 596 |
4/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 12 not taken.
✗ Branch 13 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
| 610 |
3/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 9 not taken.
✗ Branch 10 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/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 12 not taken.
✗ Branch 13 not taken.
|
20 | new Ellipsoid(generateRandomVector<3>(Scalar(0.05), 1))); |
| 624 |
3/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 9 not taken.
✗ Branch 10 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/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 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/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 9 not taken.
✗ Branch 10 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 |