| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | * Software License Agreement (BSD License) | ||
| 3 | * | ||
| 4 | * Copyright (c) 2011-2014, Willow Garage, Inc. | ||
| 5 | * Copyright (c) 2014-2015, Open Source Robotics Foundation | ||
| 6 | * All rights reserved. | ||
| 7 | * | ||
| 8 | * Redistribution and use in source and binary forms, with or without | ||
| 9 | * modification, are permitted provided that the following conditions | ||
| 10 | * are met: | ||
| 11 | * | ||
| 12 | * * Redistributions of source code must retain the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer. | ||
| 14 | * * Redistributions in binary form must reproduce the above | ||
| 15 | * copyright notice, this list of conditions and the following | ||
| 16 | * disclaimer in the documentation and/or other materials provided | ||
| 17 | * with the distribution. | ||
| 18 | * * Neither the name of Open Source Robotics Foundation nor the names of its | ||
| 19 | * contributors may be used to endorse or promote products derived | ||
| 20 | * from this software without specific prior written permission. | ||
| 21 | * | ||
| 22 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
| 23 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
| 24 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
| 25 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
| 26 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 27 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||
| 28 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| 29 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
| 30 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
| 31 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | ||
| 32 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | /** \author Jia Pan */ | ||
| 37 | |||
| 38 | #define BOOST_TEST_MODULE COAL_FRONT_LIST | ||
| 39 | #include <boost/test/included/unit_test.hpp> | ||
| 40 | |||
| 41 | #include "coal/internal/traversal_node_bvhs.h" | ||
| 42 | #include "coal/internal/traversal_node_setup.h" | ||
| 43 | #include <../src/collision_node.h> | ||
| 44 | #include "coal/internal/BV_splitter.h" | ||
| 45 | #include "utility.h" | ||
| 46 | |||
| 47 | #include "fcl_resources/config.h" | ||
| 48 | #include <boost/filesystem.hpp> | ||
| 49 | |||
| 50 | using namespace coal; | ||
| 51 | namespace utf = boost::unit_test::framework; | ||
| 52 | |||
| 53 | template <typename BV> | ||
| 54 | bool collide_front_list_Test(const Transform3s& tf1, const Transform3s& tf2, | ||
| 55 | const std::vector<Vec3s>& vertices1, | ||
| 56 | const std::vector<Triangle32>& triangles1, | ||
| 57 | const std::vector<Vec3s>& vertices2, | ||
| 58 | const std::vector<Triangle32>& triangles2, | ||
| 59 | SplitMethodType split_method, bool refit_bottomup, | ||
| 60 | bool verbose); | ||
| 61 | |||
| 62 | template <typename BV, typename TraversalNode> | ||
| 63 | bool collide_front_list_Test_Oriented(const Transform3s& tf1, | ||
| 64 | const Transform3s& tf2, | ||
| 65 | const std::vector<Vec3s>& vertices1, | ||
| 66 | const std::vector<Triangle32>& triangles1, | ||
| 67 | const std::vector<Vec3s>& vertices2, | ||
| 68 | const std::vector<Triangle32>& triangles2, | ||
| 69 | SplitMethodType split_method, | ||
| 70 | bool verbose); | ||
| 71 | |||
| 72 | template <typename BV> | ||
| 73 | bool collide_Test(const Transform3s& tf, const std::vector<Vec3s>& vertices1, | ||
| 74 | const std::vector<Triangle32>& triangles1, | ||
| 75 | const std::vector<Vec3s>& vertices2, | ||
| 76 | const std::vector<Triangle32>& triangles2, | ||
| 77 | SplitMethodType split_method, bool verbose); | ||
| 78 | |||
| 79 | // TODO: randomly still have some runtime error | ||
| 80 |
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(front_list) { |
| 81 | 2 | std::vector<Vec3s> p1, p2; | |
| 82 | 2 | std::vector<Triangle32> t1, t2; | |
| 83 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | boost::filesystem::path path(TEST_RESOURCES_DIR); |
| 84 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
4 | loadOBJFile((path / "env.obj").string().c_str(), p1, t1); |
| 85 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
4 | loadOBJFile((path / "rob.obj").string().c_str(), p2, t2); |
| 86 | |||
| 87 | 2 | std::vector<Transform3s> transforms; // t0 | |
| 88 | 2 | std::vector<Transform3s> transforms2; // t1 | |
| 89 | 2 | Scalar extents[] = {-3000, -3000, 0, 3000, 3000, 3000}; | |
| 90 | 2 | Scalar delta_trans[] = {1, 1, 1}; | |
| 91 | #ifndef NDEBUG // if debug mode | ||
| 92 | 2 | std::size_t n = 2; | |
| 93 | #else | ||
| 94 | std::size_t n = 20; | ||
| 95 | #endif | ||
| 96 |
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 | n = getNbRun(utf::master_test_suite().argc, utf::master_test_suite().argv, n); |
| 97 | 2 | bool verbose = false; | |
| 98 | |||
| 99 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | generateRandomTransforms(extents, delta_trans, Scalar(0.005 * 2 * 3.1415), |
| 100 | transforms, transforms2, n); | ||
| 101 | |||
| 102 | bool res, res2; | ||
| 103 | |||
| 104 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 105 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<AABB>(transforms2[i], p1, t1, p2, t2, |
| 106 | SPLIT_METHOD_MEDIAN, verbose); | ||
| 107 | res2 = | ||
| 108 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | collide_front_list_Test<AABB>(transforms[i], transforms2[i], p1, t1, p2, |
| 109 | t2, SPLIT_METHOD_MEDIAN, false, verbose); | ||
| 110 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 111 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<AABB>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, |
| 112 | verbose); | ||
| 113 | res2 = | ||
| 114 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | collide_front_list_Test<AABB>(transforms[i], transforms2[i], p1, t1, p2, |
| 115 | t2, SPLIT_METHOD_MEAN, false, verbose); | ||
| 116 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 117 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<AABB>(transforms2[i], p1, t1, p2, t2, |
| 118 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 119 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<AABB>(transforms[i], transforms2[i], p1, t1, |
| 120 | p2, t2, SPLIT_METHOD_BV_CENTER, false, | ||
| 121 | verbose); | ||
| 122 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 123 | } | ||
| 124 | |||
| 125 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 126 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<OBB>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEDIAN, |
| 127 | verbose); | ||
| 128 | res2 = | ||
| 129 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | collide_front_list_Test<OBB>(transforms[i], transforms2[i], p1, t1, p2, |
| 130 | t2, SPLIT_METHOD_MEDIAN, false, verbose); | ||
| 131 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 132 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<OBB>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, |
| 133 | verbose); | ||
| 134 | res2 = | ||
| 135 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | collide_front_list_Test<OBB>(transforms[i], transforms2[i], p1, t1, p2, |
| 136 | t2, SPLIT_METHOD_MEAN, false, verbose); | ||
| 137 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 138 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<OBB>(transforms2[i], p1, t1, p2, t2, |
| 139 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 140 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<OBB>(transforms[i], transforms2[i], p1, t1, |
| 141 | p2, t2, SPLIT_METHOD_BV_CENTER, false, | ||
| 142 | verbose); | ||
| 143 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 144 | } | ||
| 145 | |||
| 146 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 147 | // Disabled broken test lines. Please see #25. | ||
| 148 | // res = collide_Test<RSS>(transforms2[i], p1, t1, p2, t2, | ||
| 149 | // SPLIT_METHOD_MEDIAN, verbose); res2 = | ||
| 150 | // collide_front_list_Test<RSS>(transforms[i], transforms2[i], p1, t1, p2, | ||
| 151 | // t2, SPLIT_METHOD_MEDIAN, false, verbose); BOOST_CHECK(res == res2); | ||
| 152 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<RSS>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, |
| 153 | verbose); | ||
| 154 | res2 = | ||
| 155 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | collide_front_list_Test<RSS>(transforms[i], transforms2[i], p1, t1, p2, |
| 156 | t2, SPLIT_METHOD_MEAN, false, verbose); | ||
| 157 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 158 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<RSS>(transforms2[i], p1, t1, p2, t2, |
| 159 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 160 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<RSS>(transforms[i], transforms2[i], p1, t1, |
| 161 | p2, t2, SPLIT_METHOD_BV_CENTER, false, | ||
| 162 | verbose); | ||
| 163 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 164 | } | ||
| 165 | |||
| 166 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 167 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<16> >(transforms2[i], p1, t1, p2, t2, |
| 168 | SPLIT_METHOD_MEDIAN, verbose); | ||
| 169 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<16> >(transforms[i], transforms2[i], p1, |
| 170 | t1, p2, t2, SPLIT_METHOD_MEDIAN, | ||
| 171 | false, verbose); | ||
| 172 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 173 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<16> >(transforms2[i], p1, t1, p2, t2, |
| 174 | SPLIT_METHOD_MEAN, verbose); | ||
| 175 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<16> >(transforms[i], transforms2[i], p1, |
| 176 | t1, p2, t2, SPLIT_METHOD_MEAN, | ||
| 177 | false, verbose); | ||
| 178 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 179 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<16> >(transforms2[i], p1, t1, p2, t2, |
| 180 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 181 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<16> >( |
| 182 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_BV_CENTER, | |
| 183 | false, verbose); | ||
| 184 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 185 | } | ||
| 186 | |||
| 187 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 188 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<18> >(transforms2[i], p1, t1, p2, t2, |
| 189 | SPLIT_METHOD_MEDIAN, verbose); | ||
| 190 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<18> >(transforms[i], transforms2[i], p1, |
| 191 | t1, p2, t2, SPLIT_METHOD_MEDIAN, | ||
| 192 | false, verbose); | ||
| 193 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 194 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<18> >(transforms2[i], p1, t1, p2, t2, |
| 195 | SPLIT_METHOD_MEAN, verbose); | ||
| 196 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<18> >(transforms[i], transforms2[i], p1, |
| 197 | t1, p2, t2, SPLIT_METHOD_MEAN, | ||
| 198 | false, verbose); | ||
| 199 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 200 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<18> >(transforms2[i], p1, t1, p2, t2, |
| 201 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 202 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<18> >( |
| 203 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_BV_CENTER, | |
| 204 | false, verbose); | ||
| 205 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 206 | } | ||
| 207 | |||
| 208 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 209 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<24> >(transforms2[i], p1, t1, p2, t2, |
| 210 | SPLIT_METHOD_MEDIAN, verbose); | ||
| 211 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<24> >(transforms[i], transforms2[i], p1, |
| 212 | t1, p2, t2, SPLIT_METHOD_MEDIAN, | ||
| 213 | false, verbose); | ||
| 214 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 215 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<24> >(transforms2[i], p1, t1, p2, t2, |
| 216 | SPLIT_METHOD_MEAN, verbose); | ||
| 217 |
1/2✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<24> >(transforms[i], transforms2[i], p1, |
| 218 | t1, p2, t2, SPLIT_METHOD_MEAN, | ||
| 219 | false, verbose); | ||
| 220 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 221 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<KDOP<24> >(transforms2[i], p1, t1, p2, t2, |
| 222 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 223 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test<KDOP<24> >( |
| 224 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_BV_CENTER, | |
| 225 | false, verbose); | ||
| 226 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 227 | } | ||
| 228 | |||
| 229 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 230 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<RSS>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEDIAN, |
| 231 | verbose); | ||
| 232 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test_Oriented<RSS, MeshCollisionTraversalNodeRSS>( |
| 233 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEDIAN, | |
| 234 | verbose); | ||
| 235 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 236 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<RSS>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, |
| 237 | verbose); | ||
| 238 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test_Oriented<RSS, MeshCollisionTraversalNodeRSS>( |
| 239 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, | |
| 240 | verbose); | ||
| 241 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 242 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<RSS>(transforms2[i], p1, t1, p2, t2, |
| 243 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 244 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test_Oriented<RSS, MeshCollisionTraversalNodeRSS>( |
| 245 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_BV_CENTER, | |
| 246 | verbose); | ||
| 247 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 248 | } | ||
| 249 | |||
| 250 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
|
6 | for (std::size_t i = 0; i < transforms.size(); ++i) { |
| 251 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<OBB>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEDIAN, |
| 252 | verbose); | ||
| 253 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test_Oriented<OBB, MeshCollisionTraversalNodeOBB>( |
| 254 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEDIAN, | |
| 255 | verbose); | ||
| 256 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 257 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<OBB>(transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, |
| 258 | verbose); | ||
| 259 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test_Oriented<OBB, MeshCollisionTraversalNodeOBB>( |
| 260 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_MEAN, | |
| 261 | verbose); | ||
| 262 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 263 |
1/2✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
4 | res = collide_Test<OBB>(transforms2[i], p1, t1, p2, t2, |
| 264 | SPLIT_METHOD_BV_CENTER, verbose); | ||
| 265 |
1/2✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
|
4 | res2 = collide_front_list_Test_Oriented<OBB, MeshCollisionTraversalNodeOBB>( |
| 266 | 4 | transforms[i], transforms2[i], p1, t1, p2, t2, SPLIT_METHOD_BV_CENTER, | |
| 267 | verbose); | ||
| 268 |
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.
|
4 | BOOST_CHECK(res == res2); |
| 269 | } | ||
| 270 | 2 | } | |
| 271 | |||
| 272 | template <typename BV> | ||
| 273 | 68 | bool collide_front_list_Test(const Transform3s& tf1, const Transform3s& tf2, | |
| 274 | const std::vector<Vec3s>& vertices1, | ||
| 275 | const std::vector<Triangle32>& triangles1, | ||
| 276 | const std::vector<Vec3s>& vertices2, | ||
| 277 | const std::vector<Triangle32>& triangles2, | ||
| 278 | SplitMethodType split_method, bool refit_bottomup, | ||
| 279 | bool verbose) { | ||
| 280 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | BVHModel<BV> m1; |
| 281 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | BVHModel<BV> m2; |
| 282 |
3/8✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 34 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 34 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
68 | m1.bv_splitter.reset(new BVSplitter<BV>(split_method)); |
| 283 |
3/8✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 34 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 34 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
68 | m2.bv_splitter.reset(new BVSplitter<BV>(split_method)); |
| 284 | |||
| 285 | 68 | BVHFrontList front_list; | |
| 286 | |||
| 287 |
1/2✓ Branch 2 taken 34 times.
✗ Branch 3 not taken.
|
68 | std::vector<Vec3s> vertices1_new(vertices1.size()); |
| 288 |
2/2✓ Branch 1 taken 222360 times.
✓ Branch 2 taken 34 times.
|
444788 | for (std::size_t i = 0; i < vertices1_new.size(); ++i) { |
| 289 |
1/2✓ Branch 2 taken 222360 times.
✗ Branch 3 not taken.
|
444720 | vertices1_new[i] = tf1.transform(vertices1[i]); |
| 290 | } | ||
| 291 | |||
| 292 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m1.beginModel(); |
| 293 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m1.addSubModel(vertices1_new, triangles1); |
| 294 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m1.endModel(); |
| 295 | |||
| 296 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m2.beginModel(); |
| 297 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m2.addSubModel(vertices2, triangles2); |
| 298 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m2.endModel(); |
| 299 | |||
| 300 |
2/4✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 34 times.
✗ Branch 5 not taken.
|
68 | Transform3s pose1, pose2; |
| 301 | |||
| 302 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | CollisionResult local_result; |
| 303 |
1/2✓ Branch 2 taken 34 times.
✗ Branch 3 not taken.
|
68 | CollisionRequest request(NO_REQUEST, (std::numeric_limits<int>::max)()); |
| 304 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | MeshCollisionTraversalNode<BV> node(request); |
| 305 | |||
| 306 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | bool success = initialize<BV>(node, m1, pose1, m2, pose2, local_result); |
| 307 |
6/12✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 34 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 34 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 34 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 34 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 34 times.
|
68 | BOOST_REQUIRE(success); |
| 308 | |||
| 309 | 68 | node.enable_statistics = verbose; | |
| 310 | |||
| 311 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | collide(&node, request, local_result, &front_list); |
| 312 | |||
| 313 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 34 times.
|
68 | if (verbose) |
| 314 | ✗ | std::cout << "front list size " << front_list.size() << std::endl; | |
| 315 | |||
| 316 | // update the mesh | ||
| 317 |
2/2✓ Branch 1 taken 222360 times.
✓ Branch 2 taken 34 times.
|
444788 | for (std::size_t i = 0; i < vertices1.size(); ++i) { |
| 318 |
1/2✓ Branch 2 taken 222360 times.
✗ Branch 3 not taken.
|
444720 | vertices1_new[i] = tf2.transform(vertices1[i]); |
| 319 | } | ||
| 320 | |||
| 321 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m1.beginReplaceModel(); |
| 322 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m1.replaceSubModel(vertices1_new); |
| 323 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m1.endReplaceModel(true, refit_bottomup); |
| 324 | |||
| 325 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m2.beginReplaceModel(); |
| 326 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m2.replaceSubModel(vertices2); |
| 327 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | m2.endReplaceModel(true, refit_bottomup); |
| 328 | |||
| 329 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | local_result.clear(); |
| 330 |
1/2✓ Branch 1 taken 34 times.
✗ Branch 2 not taken.
|
68 | collide(&node, request, local_result, &front_list); |
| 331 | |||
| 332 |
2/2✓ Branch 1 taken 17 times.
✓ Branch 2 taken 17 times.
|
68 | if (local_result.numContacts() > 0) |
| 333 | 34 | return true; | |
| 334 | else | ||
| 335 | 34 | return false; | |
| 336 | 68 | } | |
| 337 | |||
| 338 | template <typename BV, typename TraversalNode> | ||
| 339 | 24 | bool collide_front_list_Test_Oriented(const Transform3s& tf1, | |
| 340 | const Transform3s& tf2, | ||
| 341 | const std::vector<Vec3s>& vertices1, | ||
| 342 | const std::vector<Triangle32>& triangles1, | ||
| 343 | const std::vector<Vec3s>& vertices2, | ||
| 344 | const std::vector<Triangle32>& triangles2, | ||
| 345 | SplitMethodType split_method, | ||
| 346 | bool verbose) { | ||
| 347 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | BVHModel<BV> m1; |
| 348 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | BVHModel<BV> m2; |
| 349 |
3/8✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
24 | m1.bv_splitter.reset(new BVSplitter<BV>(split_method)); |
| 350 |
3/8✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
24 | m2.bv_splitter.reset(new BVSplitter<BV>(split_method)); |
| 351 | |||
| 352 | 24 | BVHFrontList front_list; | |
| 353 | |||
| 354 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | m1.beginModel(); |
| 355 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | m1.addSubModel(vertices1, triangles1); |
| 356 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | m1.endModel(); |
| 357 | |||
| 358 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | m2.beginModel(); |
| 359 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | m2.addSubModel(vertices2, triangles2); |
| 360 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | m2.endModel(); |
| 361 | |||
| 362 |
2/4✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
|
24 | Transform3s pose1(tf1), pose2; |
| 363 | |||
| 364 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | CollisionResult local_result; |
| 365 |
1/2✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
|
24 | CollisionRequest request(NO_REQUEST, (std::numeric_limits<int>::max)()); |
| 366 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | TraversalNode node(request); |
| 367 | |||
| 368 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | bool success = initialize(node, (const BVHModel<BV>&)m1, pose1, |
| 369 | (const BVHModel<BV>&)m2, pose2, local_result); | ||
| 370 |
6/12✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 12 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 12 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 12 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 12 times.
|
24 | BOOST_REQUIRE(success); |
| 371 | |||
| 372 | 24 | node.enable_statistics = verbose; | |
| 373 | |||
| 374 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | collide(&node, request, local_result, &front_list); |
| 375 | |||
| 376 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 12 times.
|
24 | if (verbose) |
| 377 | ✗ | std::cout << "front list size " << front_list.size() << std::endl; | |
| 378 | |||
| 379 | // update the mesh | ||
| 380 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | pose1 = tf2; |
| 381 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | success = initialize(node, (const BVHModel<BV>&)m1, pose1, |
| 382 | (const BVHModel<BV>&)m2, pose2, local_result); | ||
| 383 |
6/12✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 12 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 12 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 12 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 12 times.
|
24 | BOOST_REQUIRE(success); |
| 384 | |||
| 385 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | local_result.clear(); |
| 386 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
24 | collide(&node, request, local_result, &front_list); |
| 387 | |||
| 388 |
2/2✓ Branch 1 taken 6 times.
✓ Branch 2 taken 6 times.
|
24 | if (local_result.numContacts() > 0) |
| 389 | 12 | return true; | |
| 390 | else | ||
| 391 | 12 | return false; | |
| 392 | 24 | } | |
| 393 | |||
| 394 | template <typename BV> | ||
| 395 | 92 | bool collide_Test(const Transform3s& tf, const std::vector<Vec3s>& vertices1, | |
| 396 | const std::vector<Triangle32>& triangles1, | ||
| 397 | const std::vector<Vec3s>& vertices2, | ||
| 398 | const std::vector<Triangle32>& triangles2, | ||
| 399 | SplitMethodType split_method, bool verbose) { | ||
| 400 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | BVHModel<BV> m1; |
| 401 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | BVHModel<BV> m2; |
| 402 |
3/8✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 46 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
92 | m1.bv_splitter.reset(new BVSplitter<BV>(split_method)); |
| 403 |
3/8✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 46 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
92 | m2.bv_splitter.reset(new BVSplitter<BV>(split_method)); |
| 404 | |||
| 405 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | m1.beginModel(); |
| 406 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | m1.addSubModel(vertices1, triangles1); |
| 407 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | m1.endModel(); |
| 408 | |||
| 409 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | m2.beginModel(); |
| 410 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | m2.addSubModel(vertices2, triangles2); |
| 411 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | m2.endModel(); |
| 412 | |||
| 413 |
2/4✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
|
92 | Transform3s pose1(tf), pose2; |
| 414 | |||
| 415 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | CollisionResult local_result; |
| 416 |
1/2✓ Branch 2 taken 46 times.
✗ Branch 3 not taken.
|
92 | CollisionRequest request(NO_REQUEST, (std::numeric_limits<int>::max)()); |
| 417 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | MeshCollisionTraversalNode<BV> node(request); |
| 418 | |||
| 419 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | bool success = initialize<BV>(node, m1, pose1, m2, pose2, local_result); |
| 420 |
6/12✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 46 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 46 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 46 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 46 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 46 times.
|
92 | BOOST_REQUIRE(success); |
| 421 | |||
| 422 | 92 | node.enable_statistics = verbose; | |
| 423 | |||
| 424 |
1/2✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
|
92 | collide(&node, request, local_result); |
| 425 | |||
| 426 |
2/2✓ Branch 1 taken 23 times.
✓ Branch 2 taken 23 times.
|
92 | if (local_result.numContacts() > 0) |
| 427 | 46 | return true; | |
| 428 | else | ||
| 429 | 46 | return false; | |
| 430 | 92 | } | |
| 431 |