GCC Code Coverage Report


Directory: ./
File: test/geometric_shapes.cpp
Date: 2025-04-01 09:23:31
Exec Total Coverage
Lines: 3047 3094 98.5%
Branches: 6139 12454 49.3%

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 * Copyright (c) 2024, INRIA
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above
16 * copyright notice, this list of conditions and the following
17 * disclaimer in the documentation and/or other materials provided
18 * with the distribution.
19 * * Neither the name of Open Source Robotics Foundation nor the names of its
20 * contributors may be used to endorse or promote products derived
21 * from this software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37 /** \author Jia Pan */
38
39 #define BOOST_TEST_MODULE COAL_GEOMETRIC_SHAPES
40 #include <boost/test/included/unit_test.hpp>
41
42 #include "coal/narrowphase/narrowphase.h"
43 #include "coal/collision.h"
44 #include "coal/distance.h"
45 #include "utility.h"
46 #include <iostream>
47 #include "coal/internal/tools.h"
48 #include "coal/shape/geometric_shape_to_BVH_model.h"
49 #include "coal/internal/shape_shape_func.h"
50
51 using namespace coal;
52
53 Scalar extents[6] = {0, 0, 0, 10, 10, 10};
54
55 Scalar tol_gjk = Scalar(0.01);
56 GJKSolver solver1;
57 GJKSolver solver2;
58
59 int line;
60 #define SET_LINE line = __LINE__
61 #define FCL_CHECK(cond) \
62 BOOST_CHECK_MESSAGE(cond, "from line " << line << ": " #cond)
63 #define FCL_CHECK_EQUAL(a, b) \
64 BOOST_CHECK_MESSAGE((a) == (b), "from line " << line << ": " #a "[" << (a) \
65 << "] != " #b "[" << (b) \
66 << "].")
67 #define BOOST_CHECK_FALSE(p) BOOST_CHECK(!(p))
68
69 namespace coal {
70 std::ostream& operator<<(std::ostream& os, const ShapeBase&) {
71 return os << "a_shape";
72 }
73
74 std::ostream& operator<<(std::ostream& os, const Box& b) {
75 return os << "Box(" << 2 * b.halfSide.transpose() << ')';
76 }
77 } // namespace coal
78
79 template <typename S1, typename S2>
80 void printComparisonError(const std::string& comparison_type, const S1& s1,
81 const Transform3s& tf1, const S2& s2,
82 const Transform3s& tf2,
83 const Vec3s& contact_or_normal,
84 const Vec3s& expected_contact_or_normal,
85 bool check_opposite_normal, Scalar tol) {
86 std::cout << "Disagreement between " << comparison_type << " and expected_"
87 << comparison_type << " for " << getNodeTypeName(s1.getNodeType())
88 << " and " << getNodeTypeName(s2.getNodeType()) << ".\n"
89 << "tf1.quaternion: " << tf1.getQuatRotation() << std::endl
90 << "tf1.translation: " << tf1.getTranslation().transpose()
91 << std::endl
92 << "tf2.quaternion: " << tf2.getQuatRotation() << std::endl
93 << "tf2.translation: " << tf2.getTranslation().transpose()
94 << std::endl
95 << comparison_type << ": " << contact_or_normal.transpose()
96 << std::endl
97 << "expected_" << comparison_type << ": "
98 << expected_contact_or_normal.transpose();
99
100 if (check_opposite_normal)
101 std::cout << " or " << -expected_contact_or_normal.transpose();
102
103 std::cout << std::endl
104 << "difference: "
105 << (contact_or_normal - expected_contact_or_normal).norm()
106 << std::endl
107 << "tolerance: " << tol << std::endl;
108 }
109
110 template <typename S1, typename S2>
111 void printComparisonError(const std::string& comparison_type, const S1& s1,
112 const Transform3s& tf1, const S2& s2,
113 const Transform3s& tf2, Scalar depth,
114 Scalar expected_depth, Scalar tol) {
115 std::cout << "Disagreement between " << comparison_type << " and expected_"
116 << comparison_type << " for " << getNodeTypeName(s1.getNodeType())
117 << " and " << getNodeTypeName(s2.getNodeType()) << ".\n"
118 << "tf1.quaternion: " << tf1.getQuatRotation() << std::endl
119 << "tf1.translation: " << tf1.getTranslation() << std::endl
120 << "tf2.quaternion: " << tf2.getQuatRotation() << std::endl
121 << "tf2.translation: " << tf2.getTranslation() << std::endl
122 << "depth: " << depth << std::endl
123 << "expected_depth: " << expected_depth << std::endl
124 << "difference: " << std::fabs(depth - expected_depth) << std::endl
125 << "tolerance: " << tol << std::endl;
126 }
127
128 template <typename S1, typename S2>
129 550 void compareContact(const S1& s1, const Transform3s& tf1, const S2& s2,
130 const Transform3s& tf2, const Vec3s& contact,
131 Vec3s* expected_point, Scalar depth, Scalar* expected_depth,
132 const Vec3s& normal, Vec3s* expected_normal,
133 bool check_opposite_normal, Scalar tol) {
134
2/2
✓ Branch 0 taken 153 times.
✓ Branch 1 taken 122 times.
550 if (expected_point) {
135 306 bool contact_equal = isEqual(contact, *expected_point, tol);
136
7/14
✓ Branch 3 taken 153 times.
✗ Branch 4 not taken.
✓ Branch 8 taken 153 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 153 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 153 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 153 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 153 times.
✗ Branch 21 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 153 times.
306 FCL_CHECK(contact_equal);
137
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 153 times.
306 if (!contact_equal)
138 printComparisonError("contact", s1, tf1, s2, tf2, contact,
139 *expected_point, false, tol);
140 }
141
142
2/2
✓ Branch 0 taken 173 times.
✓ Branch 1 taken 102 times.
550 if (expected_depth) {
143 346 bool depth_equal = std::fabs(depth - *expected_depth) < tol;
144
7/14
✓ Branch 3 taken 173 times.
✗ Branch 4 not taken.
✓ Branch 8 taken 173 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 173 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 173 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 173 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 173 times.
✗ Branch 21 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 173 times.
346 FCL_CHECK(depth_equal);
145
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 173 times.
346 if (!depth_equal)
146 printComparisonError("depth", s1, tf1, s2, tf2, depth, *expected_depth,
147 tol);
148 }
149
150
2/2
✓ Branch 0 taken 246 times.
✓ Branch 1 taken 29 times.
550 if (expected_normal) {
151 492 bool normal_equal = isEqual(normal, *expected_normal, tol);
152
153
3/4
✓ Branch 0 taken 13 times.
✓ Branch 1 taken 233 times.
✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
492 if (!normal_equal && check_opposite_normal)
154
1/2
✓ Branch 2 taken 13 times.
✗ Branch 3 not taken.
26 normal_equal = isEqual(normal, -(*expected_normal), tol);
155
156
7/14
✓ Branch 3 taken 246 times.
✗ Branch 4 not taken.
✓ Branch 8 taken 246 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 246 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 246 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 246 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 246 times.
✗ Branch 21 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 246 times.
492 FCL_CHECK(normal_equal);
157
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 246 times.
492 if (!normal_equal)
158 printComparisonError("normal", s1, tf1, s2, tf2, normal, *expected_normal,
159 check_opposite_normal, tol);
160 }
161 550 }
162
163 template <typename S1, typename S2>
164 822 void testShapeCollide(const S1& s1, const Transform3s& tf1, const S2& s2,
165 const Transform3s& tf2, bool expect_collision,
166 Vec3s* expected_point = NULL,
167 Scalar* expected_depth = NULL,
168 Vec3s* expected_normal = NULL,
169 bool check_opposite_normal = false,
170 Scalar tol = Scalar(1e-9)) {
171
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 CollisionRequest request;
172
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 CollisionResult result;
173
174
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 Vec3s contact;
175
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 Vec3s normal; // normal direction should be from object 1 to object 2
176 bool collision;
177 822 bool check_failed = false;
178
179 822 request.enable_contact = false;
180
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 result.clear();
181
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 collision = (collide(&s1, tf1, &s2, tf2, request, result) > 0);
182
12/24
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 411 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 411 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 411 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 411 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 411 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 411 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 411 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 411 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 411 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 411 times.
✗ Branch 35 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 411 times.
822 FCL_CHECK_EQUAL(collision, expect_collision);
183
2/4
✓ Branch 0 taken 411 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 411 times.
822 check_failed = check_failed || (collision != expect_collision);
184
185 822 request.enable_contact = true;
186
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 result.clear();
187
1/2
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
822 collision = (collide(&s1, tf1, &s2, tf2, request, result) > 0);
188
12/24
✓ Branch 1 taken 411 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 411 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 411 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 411 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 411 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 411 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 411 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 411 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 411 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 411 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 411 times.
✗ Branch 35 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 411 times.
822 FCL_CHECK_EQUAL(collision, expect_collision);
189
2/4
✓ Branch 0 taken 411 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 411 times.
822 check_failed = check_failed || (collision != expect_collision);
190
191
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 411 times.
822 if (check_failed) {
192 BOOST_TEST_MESSAGE("Failure occured between " << s1 << " and " << s2
193 << " at transformations\n"
194 << tf1 << '\n'
195 << tf2);
196 }
197
198
2/2
✓ Branch 0 taken 275 times.
✓ Branch 1 taken 136 times.
822 if (expect_collision) {
199
12/24
✓ Branch 1 taken 275 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 275 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 275 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 275 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 275 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 275 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 275 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 275 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 275 times.
✗ Branch 30 not taken.
✓ Branch 33 taken 275 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 275 times.
✗ Branch 37 not taken.
✗ Branch 47 not taken.
✓ Branch 48 taken 275 times.
550 FCL_CHECK_EQUAL(result.numContacts(), 1);
200
1/2
✓ Branch 1 taken 275 times.
✗ Branch 2 not taken.
550 if (result.numContacts() == 1) {
201
2/4
✓ Branch 1 taken 275 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 275 times.
✗ Branch 5 not taken.
550 Contact contact = result.getContact(0);
202
1/2
✓ Branch 1 taken 275 times.
✗ Branch 2 not taken.
550 compareContact(s1, tf1, s2, tf2, contact.pos, expected_point,
203 contact.penetration_depth, expected_depth, contact.normal,
204 expected_normal, check_opposite_normal, tol);
205 }
206 }
207 822 }
208
209
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(box_to_bvh) {
210
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box shape(1, 1, 1);
211
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 BVHModel<OBB> bvh;
212
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s());
213 2 }
214
215
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(sphere_to_bvh) {
216
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere shape(1);
217
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 BVHModel<OBB> bvh;
218
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s(), 10, 10);
219
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s(), 50);
220 2 }
221
222
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(cylinder_to_bvh) {
223
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder shape(1, 1);
224
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 BVHModel<OBB> bvh;
225
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s(), 10, 10);
226
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s(), 50);
227 2 }
228
229
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(cone_to_bvh) {
230
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone shape(1, 1);
231
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 BVHModel<OBB> bvh;
232
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s(), 10, 10);
233
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 generateBVHModel(bvh, shape, Transform3s(), 50);
234 2 }
235
236
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(collide_spheresphere) {
237
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s1(20);
238
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s2(10);
239
240
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
241
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
242
243
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
244
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
245
246 // Vec3s point;
247 // Scalar depth;
248
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
249
250
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
251
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 tf2 = Transform3s(Vec3s(40, 0, 0));
252 2 SET_LINE;
253
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
254
255
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
256
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(40, 0, 0));
257 2 SET_LINE;
258
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
259
260
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
261
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 tf2 = Transform3s(Vec3s(30, 0, 0));
262
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 normal << 1, 0, 0;
263 2 SET_LINE;
264
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
265
266
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
267
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 tf2 = Transform3s(Vec3s(Scalar(30.01), 0, 0));
268 2 SET_LINE;
269
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
270
271
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
272
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(30.01), 0, 0));
273
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
274 2 SET_LINE;
275
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
276
277
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
278
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 tf2 = Transform3s(Vec3s(Scalar(29.9), 0, 0));
279
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 normal << 1, 0, 0;
280 2 SET_LINE;
281
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
282
283
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
284
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(29.9), 0, 0));
285
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
286 2 SET_LINE;
287
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
288
289
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
290
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
291
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 normal << 1, 0, 0; // If the centers of two sphere are at the same position,
292 // the normal is (1, 0, 0)
293 2 SET_LINE;
294
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
295
296
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
297
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
298
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 normal << 1, 0, 0; // If the centers of two sphere are at the same position,
299 // the normal is (1, 0, 0)
300 2 SET_LINE;
301
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
302
303
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
304
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 tf2 = Transform3s(Vec3s(Scalar(-29.9), 0, 0));
305
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 normal << -1, 0, 0;
306 2 SET_LINE;
307
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
308
309
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
310
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-29.9), 0, 0));
311
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
312 2 SET_LINE;
313
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
314
315
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
316
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 tf2 = Transform3s(Vec3s(-30.0, 0, 0));
317
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 normal << -1, 0, 0;
318 2 SET_LINE;
319
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
320
321
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
322
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 tf2 = Transform3s(Vec3s(Scalar(-30.01), 0, 0));
323
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 normal << -1, 0, 0;
324 2 SET_LINE;
325
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
326
327
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
328
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-30.01), 0, 0));
329 2 SET_LINE;
330
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
331 2 }
332
333 2075 bool compareContactPoints(const Vec3s& c1, const Vec3s& c2) {
334 2075 return c1[2] < c2[2];
335 } // Ascending order
336
337 100 void testBoxBoxContactPoints(const Matrix3s& R) {
338
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
100 Box s1(100, 100, 100);
339
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
100 Box s2(10, 20, 30);
340
341 // Vertices of s2
342
1/2
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
100 std::vector<Vec3s> vertices(8);
343
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[0] << 1, 1, 1;
344
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[1] << 1, 1, -1;
345
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[2] << 1, -1, 1;
346
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[3] << 1, -1, -1;
347
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[4] << -1, 1, 1;
348
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[5] << -1, 1, -1;
349
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[6] << -1, -1, 1;
350
3/6
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 vertices[7] << -1, -1, -1;
351
352
2/2
✓ Branch 0 taken 800 times.
✓ Branch 1 taken 100 times.
900 for (std::size_t i = 0; i < 8; ++i) {
353
3/6
✓ Branch 1 taken 800 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 800 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 800 times.
✗ Branch 9 not taken.
800 vertices[i].array() *= s2.halfSide.array();
354 }
355
356
2/4
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
100 Transform3s tf1 = Transform3s(Vec3s(0, 0, -50));
357
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
100 Transform3s tf2 = Transform3s(R);
358
359
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
100 Vec3s normal;
360
2/4
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
100 Vec3s p1, p2;
361
362 // Make sure the two boxes are colliding
363 100 solver1.gjk_tolerance = Scalar(1e-5);
364 100 solver1.epa_tolerance = Scalar(1e-5);
365 100 const bool compute_penetration = true;
366
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
100 Scalar distance = solver1.shapeDistance(s1, tf1, s2, tf2, compute_penetration,
367 p1, p2, normal);
368
8/16
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 100 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 100 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 100 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 100 times.
✗ Branch 23 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 100 times.
100 FCL_CHECK(distance <= 0);
369
370 // Compute global vertices
371
3/4
✓ Branch 2 taken 800 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 800 times.
✓ Branch 7 taken 100 times.
900 for (std::size_t i = 0; i < 8; ++i) vertices[i] = tf2.transform(vertices[i]);
372
373 // Sort the vertices so that the lowest vertex along z-axis comes first
374
1/2
✓ Branch 3 taken 100 times.
✗ Branch 4 not taken.
100 std::sort(vertices.begin(), vertices.end(), compareContactPoints);
375
376 // The lowest vertex along z-axis should be the contact point
377
10/20
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 100 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 100 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 100 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 100 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 100 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 100 times.
✗ Branch 29 not taken.
✗ Branch 35 not taken.
✓ Branch 36 taken 100 times.
100 FCL_CHECK(normal.isApprox(Vec3s(0, 0, 1), Scalar(1e-6)));
378
3/6
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 100 times.
✗ Branch 8 not taken.
100 Vec3s point = Scalar(0.5) * (p1 + p2);
379
11/22
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 100 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 100 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 100 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 100 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 100 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 100 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 100 times.
✗ Branch 33 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 100 times.
100 FCL_CHECK(vertices[0].head<2>().isApprox(point.head<2>(), Scalar(1e-6)));
380
13/26
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 100 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 100 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 100 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 100 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 100 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 100 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 100 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 100 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 100 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 100 times.
✗ Branch 37 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 100 times.
100 FCL_CHECK(vertices[0][2] <= point[2] && point[2] < 0);
381 100 }
382
383
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(collide_boxbox) {
384
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s1(20, 40, 50);
385
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s2(10, 10, 10);
386
387
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
388
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
389
390
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
391
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
392
393 // Vec3s point;
394 // Scalar depth;
395
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
396
397
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Quats q;
398
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 q = AngleAxis((Scalar)3.140 / 6, UnitZ);
399
400
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
401
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
402 // TODO: Need convention for normal when the centers of two objects are at
403 // same position. The current result is (1, 0, 0).
404
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 normal << 1, 0, 0;
405 2 SET_LINE;
406
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, 0x0);
407
408
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
409
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
410 // TODO: Need convention for normal when the centers of two objects are at
411 // same position. The current result is (1, 0, 0).
412
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
413 2 SET_LINE;
414
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, 0x0);
415
416
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
417
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 tf2 = Transform3s(Vec3s(15, 0, 0));
418
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 normal << 1, 0, 0;
419 2 SET_LINE;
420
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false,
421 Scalar(1e-8));
422
423
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
424
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 tf2 = Transform3s(Vec3s(Scalar(15.01), 0, 0));
425 2 SET_LINE;
426
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
427
428
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
429
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(15.01), 0, 0));
430 2 SET_LINE;
431
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
432
433
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
434
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s(q);
435
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 normal << 1, 0, 0;
436 2 SET_LINE;
437
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, 0x0);
438
439
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
440
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 tf2 = transform * Transform3s(q);
441
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
442 2 SET_LINE;
443
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, 0x0);
444
445 2 int numTests = 100;
446
2/2
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
202 for (int i = 0; i < numTests; ++i) {
447
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
200 Transform3s tf;
448
1/2
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
200 generateRandomTransform(extents, tf);
449 200 SET_LINE;
450
1/2
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
200 testBoxBoxContactPoints(tf.getRotation());
451 }
452 2 }
453
454
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(collide_spherebox) {
455
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s1(20);
456
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s2(5, 5, 5);
457
458
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
459
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
460
461
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
462
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
463
464 // Vec3s point;
465 // Scalar depth;
466
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
467
468
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
469
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
470 // TODO: Need convention for normal when the centers of two objects are at
471 // same position. The current result is (-1, 0, 0).
472
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 normal << -1, 0, 0;
473 2 SET_LINE;
474
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
475
476
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
477
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
478 // TODO: Need convention for normal when the centers of two objects are at
479 // same position.
480 2 SET_LINE;
481
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
482
483
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
484
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 tf2 = Transform3s(Vec3s(Scalar(22.50001), 0, 0));
485 2 SET_LINE;
486
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
487
488
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
489
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(22.501), 0, 0));
490 2 SET_LINE;
491
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
492
493
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
494
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 tf2 = Transform3s(Vec3s(Scalar(22.4), 0, 0));
495
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 normal << 1, 0, 0;
496 2 SET_LINE;
497
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
498
499
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
500
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(22.4), 0, 0));
501
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
502 2 SET_LINE;
503
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
504 2 }
505
506
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(distance_spherebox) {
507
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 coal::Matrix3s rotSphere;
508
9/18
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
2 rotSphere << 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0;
509
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 coal::Vec3s trSphere(0.0, 0.0, 0.0);
510
511
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 coal::Matrix3s rotBox;
512
9/18
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
2 rotBox << 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0;
513
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 coal::Vec3s trBox(0.0, 5.0, 3.0);
514
515
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 coal::Sphere sphere(1);
516
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 coal::Box box(10, 2, 10);
517
518
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 coal::DistanceResult result;
519
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 distance(&sphere, Transform3s(rotSphere, trSphere), &box,
520
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Transform3s(rotBox, trBox), DistanceRequest(true), result);
521
522 2 Scalar eps = Eigen::NumTraits<Scalar>::epsilon();
523
6/12
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
2 BOOST_CHECK_CLOSE(result.min_distance, 3., eps);
524
18/36
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 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 51 taken 1 times.
✗ Branch 52 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 65 not taken.
✓ Branch 66 taken 1 times.
2 EIGEN_VECTOR_IS_APPROX(result.nearest_points[0], Vec3s(0, 1, 0), eps);
525
18/36
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 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 51 taken 1 times.
✗ Branch 52 not taken.
✓ Branch 54 taken 1 times.
✗ Branch 55 not taken.
✗ Branch 65 not taken.
✓ Branch 66 taken 1 times.
2 EIGEN_VECTOR_IS_APPROX(result.nearest_points[1], Vec3s(0, 4, 0), eps);
526
18/36
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 1 times.
2 EIGEN_VECTOR_IS_APPROX(result.normal, Vec3s(0, 1, 0), eps);
527 2 }
528
529
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(collide_spherecapsule) {
530
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s1(20);
531
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Capsule s2(5, 10);
532
533
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
534
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
535
536
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
537
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
538
539 // Vec3s point;
540 // Scalar depth;
541
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
542
543
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
544
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
545 // TODO: Need convention for normal when the centers of two objects are at
546 // same position.
547 2 SET_LINE;
548
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
549
550
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
551
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
552 // TODO: Need convention for normal when the centers of two objects are at
553 // same position.
554 2 SET_LINE;
555
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
556
557
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
558
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 tf2 = Transform3s(Vec3s(Scalar(24.9), 0, 0));
559
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 normal << 1, 0, 0;
560 2 SET_LINE;
561
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
562
563
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
564
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(24.9), 0, 0));
565
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
566 2 SET_LINE;
567
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
568
569
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
570
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 tf2 = Transform3s(Vec3s(25, 0, 0));
571
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 normal << 1, 0, 0;
572 2 SET_LINE;
573
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
574
575
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
576
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(24.999999), 0, 0));
577
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
578 2 SET_LINE;
579
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
580
581
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
582
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 tf2 = Transform3s(Vec3s(Scalar(25.1), 0, 0));
583
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 normal << 1, 0, 0;
584 2 SET_LINE;
585
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
586
587
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
588
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(25.1), 0, 0));
589
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
590 2 SET_LINE;
591
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
592 2 }
593
594
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(collide_cylindercylinder) {
595
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s1(5, 15);
596
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s2(5, 15);
597
598
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
599
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
600
601
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
602
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
603
604 // Vec3s point;
605 // Scalar depth;
606
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
607
608
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
609
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
610 // TODO: Need convention for normal when the centers of two objects are at
611 // same position.
612 2 SET_LINE;
613
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
614
615
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
616
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
617 // TODO: Need convention for normal when the centers of two objects are at
618 // same position.
619 2 SET_LINE;
620
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
621
622
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
623
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 tf2 = Transform3s(Vec3s(Scalar(9.9), 0, 0));
624
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 normal << 1, 0, 0;
625 2 SET_LINE;
626
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
627
628
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
629
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 tf2 = Transform3s(Vec3s(0, Scalar(9.9), 0));
630
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 normal << 0, 1, 0;
631 2 SET_LINE;
632
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
633
634
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
635
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 tf2 = Transform3s(Vec3s(Scalar(9.9), 0, 0));
636
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 normal << 1, 0, 0;
637 2 SET_LINE;
638
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
639
640
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
641
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(9.9), 0, 0));
642
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
643 2 SET_LINE;
644
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
645
646
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
647
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 tf2 = Transform3s(Vec3s(Scalar(10.01), 0, 0));
648 2 SET_LINE;
649
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
650
651
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
652
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(10.01), 0, 0));
653 2 SET_LINE;
654
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
655 2 }
656
657
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(collide_conecone) {
658
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s1(5, 10);
659
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s2(5, 10);
660
661
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
662
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
663
664
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
665
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
666
667 // Vec3s point;
668 // Scalar depth;
669
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
670
671
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
672
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
673 // TODO: Need convention for normal when the centers of two objects are at
674 // same position.
675 2 SET_LINE;
676
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
677
678
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
679
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
680 // TODO: Need convention for normal when the centers of two objects are at
681 // same position.
682 2 SET_LINE;
683
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
684
685
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
686 // z=0 is a singular points. Two normals could be returned.
687
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 tf2 = Transform3s(Vec3s(Scalar(9.9), 0, Scalar(0.00001)));
688
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = Vec3s(2 * (s1.halfLength + s2.halfLength), 0, s1.radius + s2.radius)
689
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 .normalized();
690 2 SET_LINE;
691
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
692
693
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
694
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = transform * tf2;
695
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
696 2 SET_LINE;
697
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
698
699
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
700
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(9.9), 0, Scalar(0.00001)));
701
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = Vec3s(2 * (s1.halfLength + s2.halfLength), 0, s1.radius + s2.radius)
702
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 .normalized();
703
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
704 2 SET_LINE;
705
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, true, tol_gjk);
706
707
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
708
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 tf2 = Transform3s(Vec3s(Scalar(10.1), 0, 0));
709 2 SET_LINE;
710
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
711
712
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
713
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 tf2 = Transform3s(Vec3s(Scalar(10.001), 0, 0));
714 2 SET_LINE;
715
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
716
717
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
718
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(10.001), 0, 0));
719 2 SET_LINE;
720
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
721
722
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
723
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(9.9)));
724
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 normal << 0, 0, 1;
725 2 SET_LINE;
726
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
727
728
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
729
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(9.9)));
730
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1);
731 2 SET_LINE;
732
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
733 2 }
734
735
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(collide_conecylinder) {
736
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s1(5, 10);
737
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s2(5, 10);
738
739
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
740
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
741
742
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
743
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
744
745 // Vec3s point;
746 // Scalar depth;
747
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
748
749
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
750
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
751 // TODO: Need convention for normal when the centers of two objects are at
752 // same position.
753 2 SET_LINE;
754
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
755
756
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
757
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
758 // TODO: Need convention for normal when the centers of two objects are at
759 // same position.
760 2 SET_LINE;
761
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
762
763
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
764
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 tf2 = Transform3s(Vec3s(Scalar(9.9), 0, 0));
765 normal =
766
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s(2 * (s1.halfLength + s2.halfLength), 0, -(s1.radius + s2.radius))
767
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 .normalized();
768 2 SET_LINE;
769
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
770
771
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
772
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(9.9), 0, 0));
773
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
774 2 SET_LINE;
775
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
776
777
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
778
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 tf2 = Transform3s(Vec3s(Scalar(9.9), 0, Scalar(0.1)));
779
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 normal << 1, 0, 0;
780 2 SET_LINE;
781
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
782
783
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
784
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(9.9), 0, Scalar(0.1)));
785
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
786 2 SET_LINE;
787
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
788
789
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
790
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 tf2 = Transform3s(Vec3s(Scalar(10.01), 0, 0));
791 2 SET_LINE;
792
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
793
794
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
795
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(10.01), 0, 0));
796 2 SET_LINE;
797
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
798
799
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
800
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 tf2 = Transform3s(Vec3s(10, 0, 0));
801 2 SET_LINE;
802
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
803
804
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
805
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(10, 0, 0));
806 2 SET_LINE;
807
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, NULL);
808
809
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
810
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(9.9)));
811
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 normal << 0, 0, 1;
812 2 SET_LINE;
813
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
814
815
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
816
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(9.9)));
817
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1);
818 2 SET_LINE;
819
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal);
820
821
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
822
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(10.01)));
823 2 SET_LINE;
824
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
825
826
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
827
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(10.01)));
828 2 SET_LINE;
829
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
830
831
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
832
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 tf2 = Transform3s(Vec3s(0, 0, 10));
833
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 normal << 0, 0, 1;
834 2 SET_LINE;
835
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, true, NULL, NULL, &normal, false, tol_gjk);
836
837
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
838
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(10.1)));
839 2 SET_LINE;
840
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s1, tf1, s2, tf2, false);
841 2 }
842
843
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(collide_spheretriangle) {
844
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s(10);
845
846
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
847
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
848
849
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
850
851 //
852 // Testing collision x, y, z
853 //
854 {
855
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
856
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 t[0] << 20, 0, 0;
857
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 t[1] << -20, 0, 0;
858
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 t[2] << 0, 20, 0;
859
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
860
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s(); // identity
861
862
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.001)));
863
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 normal << 0, 0, 1;
864 2 SET_LINE;
865
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
866
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
867 2 SET_LINE;
868
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
869 &normal);
870
871
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-0.001)));
872
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 normal << 0, 0, -1;
873 2 SET_LINE;
874
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
875
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
876 2 SET_LINE;
877
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
878 &normal);
879 2 }
880
881 {
882
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
883
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 t[0] << 30, 0, 0;
884
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 t[1] << Scalar(9.9), -20, 0;
885
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 t[2] << Scalar(9.9), 20, 0;
886
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
887
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
888
889
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.001)));
890
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 normal << Scalar(9.9), 0, Scalar(0.001);
891
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal.normalize();
892 2 SET_LINE;
893
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
894
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
895 2 SET_LINE;
896
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
897 &normal);
898
899
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-0.001)));
900
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 normal << Scalar(9.9), 0, Scalar(-0.001);
901
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal.normalize();
902 2 SET_LINE;
903
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
904
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
905 2 SET_LINE;
906
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
907 &normal);
908 2 }
909
910 {
911
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
912
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 t[0] << 30, 0, 0;
913
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 t[1] << -20, 0, 0;
914
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 t[2] << 0, 0, 20;
915
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
916
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
917
918
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(0.001), 0));
919
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 normal << 0, 1, 0;
920 2 SET_LINE;
921
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
922
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
923 2 SET_LINE;
924
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
925 &normal);
926
927
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(-0.001), 0));
928
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 normal << 0, -1, 0;
929 2 SET_LINE;
930
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
931
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
932 2 SET_LINE;
933
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
934 &normal);
935 2 }
936
937 {
938
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
939
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 t[0] << 0, 30, 0;
940
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 t[1] << 0, -10, 0;
941
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 t[2] << 0, 0, 20;
942
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
943
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
944
945
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(0.001), 0, 0));
946
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 normal << 1, 0, 0;
947 2 SET_LINE;
948
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
949
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
950 2 SET_LINE;
951
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
952 &normal);
953
954
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(-0.001), 0, 0));
955
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 normal << -1, 0, 0;
956
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
957 2 SET_LINE;
958
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
959 2 SET_LINE;
960
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, true, NULL, NULL,
961 &normal);
962 2 }
963
964 //
965 // Testing no collision x, y, z
966 //
967 {
968
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
969
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 t[0] << 20, 0, 0;
970
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 t[1] << -20, 0, 0;
971
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 t[2] << 0, 20, 0;
972
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
973
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
974
975
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(10.1)));
976 2 SET_LINE;
977
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, false);
978 2 SET_LINE;
979
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, false);
980
981
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-10.1)));
982 2 SET_LINE;
983
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, false);
984 2 SET_LINE;
985
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, false);
986 2 }
987
988 {
989
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
990
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 t[0] << 20, 0, 0;
991
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 t[1] << -20, 0, 0;
992
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 t[2] << 0, 0, 20;
993
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
994
995
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
996
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(10.1), 0));
997 2 SET_LINE;
998
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, false);
999 2 SET_LINE;
1000
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, false);
1001
1002
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(-10.1), 0));
1003 2 SET_LINE;
1004
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, false);
1005 2 SET_LINE;
1006
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, false);
1007 2 }
1008
1009 {
1010
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1011
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 t[0] << 0, 20, 0;
1012
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 t[1] << 0, -20, 0;
1013
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 t[2] << 0, 0, 20;
1014
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1015
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
1016
1017
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(10.1), 0, 0));
1018 2 SET_LINE;
1019
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, false);
1020 2 SET_LINE;
1021
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, false);
1022
1023
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(-10.1), 0, 0));
1024 2 SET_LINE;
1025
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, Transform3s(), tri, tf_tri, false);
1026 2 SET_LINE;
1027
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(s, transform, tri, transform * tf_tri, false);
1028 2 }
1029 2 }
1030
1031
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(collide_halfspacetriangle) {
1032
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace hs(Vec3s(0, 0, 1), 0);
1033
1034
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1035
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1036
1037
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1038
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = hs.n; // with halfspaces, it's simple: normal is always
1039 // the normal of the halfspace.
1040
1041 {
1042
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1043
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 t[0] << 20, 0, 0;
1044
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 t[1] << -20, 0, 0;
1045
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 t[2] << 0, 20, 0;
1046
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1047
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s(); // identity
1048
1049
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-0.001)));
1050
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = hs.n;
1051 2 SET_LINE;
1052
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1053
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1054 2 SET_LINE;
1055
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, true, NULL, NULL,
1056 &normal);
1057
1058
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.001)));
1059 2 SET_LINE;
1060
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1061 2 SET_LINE;
1062
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1063
1064
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(1, 1, Scalar(0.001)));
1065 2 SET_LINE;
1066
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1067 2 SET_LINE;
1068
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1069
1070
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(-1, -1, Scalar(0.001)));
1071 2 SET_LINE;
1072
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1073 2 SET_LINE;
1074
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1075 2 }
1076
1077 {
1078
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1079
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 t[0] << 30, 0, 0;
1080
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 t[1] << -20, 0, 0;
1081
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 t[2] << 0, 0, 20;
1082
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1083
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
1084
1085
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-0.001)));
1086
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = hs.n;
1087 2 SET_LINE;
1088
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1089
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1090 2 SET_LINE;
1091
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, true, NULL, NULL,
1092 &normal);
1093
1094
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.001)));
1095 2 SET_LINE;
1096
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1097 2 SET_LINE;
1098
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1099
1100
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(1, 1, Scalar(0.001)));
1101 2 SET_LINE;
1102
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1103 2 SET_LINE;
1104
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1105
1106
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(-1, -1, Scalar(0.001)));
1107 2 SET_LINE;
1108
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1109 2 SET_LINE;
1110
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1111 2 }
1112
1113 {
1114
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1115
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 t[0] << 0, 30, 0;
1116
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 t[1] << 0, -10, 0;
1117
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 t[2] << 0, 0, 20;
1118
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1119
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s();
1120
1121
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-0.001)));
1122
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = hs.n;
1123 2 SET_LINE;
1124
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1125
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1126 2 SET_LINE;
1127
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, true, NULL, NULL,
1128 &normal);
1129
1130
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.001)));
1131 2 SET_LINE;
1132
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1133 2 SET_LINE;
1134
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1135
1136
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(1, 1, Scalar(0.001)));
1137 2 SET_LINE;
1138
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1139 2 SET_LINE;
1140
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1141
1142
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(-1, -1, Scalar(0.001)));
1143 2 SET_LINE;
1144
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, Transform3s(), tri, tf_tri, false);
1145 2 SET_LINE;
1146
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(hs, transform, tri, transform * tf_tri, false);
1147 2 }
1148 2 }
1149
1150
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(collide_planetriangle) {
1151
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1152
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1153
1154
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1155
1156 {
1157
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1158
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 t[0] << 20, 0, Scalar(0.05);
1159
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 t[1] << -20, 0, Scalar(0.05);
1160
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 t[2] << 0, 20, Scalar(-0.1);
1161
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane pl(Vec3s(0, 0, 1), 0);
1162
1163
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1164
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s(); // identity
1165
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 normal = -pl.n;
1166 2 SET_LINE;
1167
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1168
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1169 2 SET_LINE;
1170
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, true, NULL, NULL,
1171 &normal);
1172
1173
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.05)));
1174
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = pl.n;
1175 2 SET_LINE;
1176
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1177
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1178 2 SET_LINE;
1179
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, true, NULL, NULL,
1180 &normal);
1181
1182
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(-0.06)));
1183 2 SET_LINE;
1184
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, false);
1185 2 SET_LINE;
1186
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, false);
1187
1188
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, 0, Scalar(0.11)));
1189 2 SET_LINE;
1190
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, false);
1191 2 SET_LINE;
1192
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, false);
1193 2 }
1194
1195 {
1196
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1197
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 t[0] << 30, Scalar(0.05), 0;
1198
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 t[1] << -20, Scalar(0.05), 0;
1199
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 t[2] << 0, Scalar(-0.1), 20;
1200
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane pl(Vec3s(0, 1, 0), 0);
1201
1202
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1203
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s(); // identity
1204
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 normal = -pl.n;
1205 2 SET_LINE;
1206
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1207
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1208 2 SET_LINE;
1209
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, true, NULL, NULL,
1210 &normal);
1211
1212
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(0.05), 0));
1213
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = pl.n;
1214 2 SET_LINE;
1215
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1216
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1217 2 SET_LINE;
1218
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, true, NULL, NULL,
1219 &normal);
1220
1221
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(-0.06), 0));
1222 2 SET_LINE;
1223
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, false);
1224 2 SET_LINE;
1225
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, false);
1226
1227
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(0, Scalar(0.11), 0));
1228 2 SET_LINE;
1229
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, false);
1230 2 SET_LINE;
1231
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, false);
1232 2 }
1233
1234 {
1235
3/4
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 1 times.
8 Vec3s t[3];
1236
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 t[0] << Scalar(0.05), 30, 0;
1237
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 t[1] << Scalar(0.05), -10, 0;
1238
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 t[2] << Scalar(-0.1), 0, 20;
1239
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane pl(Vec3s(1, 0, 0), 0);
1240
1241
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TriangleP tri(t[0], t[1], t[2]);
1242
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf_tri = Transform3s(); // identity
1243
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 normal = -pl.n;
1244 2 SET_LINE;
1245
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1246
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1247 2 SET_LINE;
1248
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, true, NULL, NULL,
1249 &normal);
1250
1251
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(0.05), 0, 0));
1252
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = pl.n;
1253 2 SET_LINE;
1254
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, true, NULL, NULL, &normal);
1255
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
1256 2 SET_LINE;
1257
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, true, NULL, NULL,
1258 &normal);
1259
1260
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(-0.06), 0, 0));
1261 2 SET_LINE;
1262
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, false);
1263 2 SET_LINE;
1264
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, false);
1265
1266
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf_tri.setTranslation(Vec3s(Scalar(0.11), 0, 0));
1267 2 SET_LINE;
1268
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, Transform3s(), tri, tf_tri, false);
1269 2 SET_LINE;
1270
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 testShapeCollide(pl, transform, tri, transform * tf_tri, false);
1271 2 }
1272 2 }
1273
1274
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(collide_halfspacesphere) {
1275
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s(10);
1276
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace hs(Vec3s(1, 0, 0), 0);
1277
1278
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
1279
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
1280
1281
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1282
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1283
1284
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
1285 Scalar depth;
1286
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1287
1288
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1289
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1290
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 contact << -5, 0, 0;
1291 2 depth = -10;
1292
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 normal << -1, 0, 0;
1293 2 SET_LINE;
1294
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1295
1296
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1297
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1298
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-5, 0, 0));
1299 2 depth = -10;
1300
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1301 2 SET_LINE;
1302
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1303
1304
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1305
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 tf2 = Transform3s(Vec3s(5, 0, 0));
1306
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 contact << -2.5, 0, 0;
1307 2 depth = -15;
1308
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 normal << -1, 0, 0;
1309 2 SET_LINE;
1310
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1311
1312
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1313
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(5, 0, 0));
1314
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-2.5, 0, 0));
1315 2 depth = -15;
1316
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1317 2 SET_LINE;
1318
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1319
1320
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1321
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 tf2 = Transform3s(Vec3s(-5, 0, 0));
1322
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 contact << -7.5, 0, 0;
1323 2 depth = -5;
1324
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 normal << -1, 0, 0;
1325 2 SET_LINE;
1326
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1327
1328
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1329
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-5, 0, 0));
1330
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-7.5, 0, 0));
1331 2 depth = -5;
1332
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1333 2 SET_LINE;
1334
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1335
1336
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1337
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 tf2 = Transform3s(Vec3s(Scalar(-10.1), 0, 0));
1338 2 SET_LINE;
1339
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1340
1341
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1342
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-10.1), 0, 0));
1343 2 SET_LINE;
1344
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1345
1346
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1347
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 tf2 = Transform3s(Vec3s(Scalar(10.1), 0, 0));
1348
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 contact << Scalar(0.05), 0, 0;
1349 2 depth = Scalar(-20.1);
1350
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 normal << -1, 0, 0;
1351 2 SET_LINE;
1352
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1353
1354
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1355
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(10.1), 0, 0));
1356
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(Scalar(0.05), 0, 0));
1357 2 depth = Scalar(-20.1);
1358
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1359 2 SET_LINE;
1360
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1361 2 }
1362
1363
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(collide_planesphere) {
1364
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s(10);
1365
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane hs(Vec3s(1, 0, 0), 0);
1366
1367
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
1368
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
1369
1370
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1371
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1372
1373
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
1374 Scalar depth;
1375
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1376
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Vec3s p1, p2;
1377
1378 2 Scalar eps = Scalar(1e-6);
1379
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 tf1 = Transform3s(Vec3s(eps, 0, 0));
1380
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1381 2 depth = -10 + eps;
1382
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 p1 << -10 + eps, 0, 0;
1383
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 p2 << 0, 0, 0;
1384
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 contact << (p1 + p2) / 2;
1385
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 normal << -1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
1386 2 SET_LINE;
1387
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1388
1389
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
1390
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1391
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 contact = transform.transform((p1 + p2) / 2);
1392 normal =
1393
3/6
✓ 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.
2 transform.getRotation() * Vec3s(-1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
1394 2 SET_LINE;
1395
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
1396
1397 2 eps = Scalar(-1e-6);
1398
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 tf1 = Transform3s(Vec3s(eps, 0, 0));
1399
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1400 2 depth = -10 - eps;
1401
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 p1 << 10 + eps, 0, 0;
1402
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 p2 << 0, 0, 0;
1403
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 contact << (p1 + p2) / 2;
1404
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 normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
1405 2 SET_LINE;
1406
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1407
1408
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
1409
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1410
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 contact = transform.transform((p1 + p2) / 2);
1411
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
1412 2 SET_LINE;
1413
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
1414
1415
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1416
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 tf2 = Transform3s(Vec3s(5, 0, 0));
1417
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 p1 << 10, 0, 0;
1418
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 p2 << 5, 0, 0;
1419
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 contact << (p1 + p2) / 2;
1420 2 depth = -5;
1421
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 normal << 1, 0, 0;
1422 2 SET_LINE;
1423
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1424
1425
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1426
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(5, 0, 0));
1427
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 contact = transform.transform((p1 + p2) / 2);
1428 2 depth = -5;
1429
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
1430 2 SET_LINE;
1431
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1432
1433
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1434
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 tf2 = Transform3s(Vec3s(-5, 0, 0));
1435
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 p1 << -10, 0, 0;
1436
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 p2 << -5, 0, 0;
1437
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 contact << (p1 + p2) / 2;
1438 2 depth = -5;
1439
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 normal << -1, 0, 0;
1440 2 SET_LINE;
1441
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1442
1443
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1444
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-5, 0, 0));
1445
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 contact = transform.transform((p1 + p2) / 2);
1446 2 depth = -5;
1447
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1448 2 SET_LINE;
1449
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1450
1451
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1452
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 tf2 = Transform3s(Vec3s(Scalar(-10.1), 0, 0));
1453 2 SET_LINE;
1454
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1455
1456
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1457
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-10.1), 0, 0));
1458 2 SET_LINE;
1459
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1460
1461
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1462
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 tf2 = Transform3s(Vec3s(Scalar(10.1), 0, 0));
1463 2 SET_LINE;
1464
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1465
1466
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1467
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(10.1), 0, 0));
1468 2 SET_LINE;
1469
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1470 2 }
1471
1472
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(collide_halfspacebox) {
1473
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s(5, 10, 20);
1474
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace hs(Vec3s(1, 0, 0), 0);
1475
1476
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
1477
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
1478
1479
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1480
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1481
1482
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
1483 Scalar depth;
1484
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1485
1486
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1487
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1488
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 contact << -1.25, 0, 0;
1489 2 depth = -2.5;
1490
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 normal << -1, 0, 0;
1491 2 SET_LINE;
1492
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1493
1494
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1495
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1496
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-1.25, 0, 0));
1497 2 depth = -2.5;
1498
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1499 2 SET_LINE;
1500
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1501
1502
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1503
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 tf2 = Transform3s(Vec3s(1.25, 0, 0));
1504
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 contact << -0.625, 0, 0;
1505 2 depth = -3.75;
1506
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 normal << -1, 0, 0;
1507 2 SET_LINE;
1508
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1509
1510
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1511
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(1.25, 0, 0));
1512
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-0.625, 0, 0));
1513 2 depth = -3.75;
1514
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1515 2 SET_LINE;
1516
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1517
1518
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1519
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 tf2 = Transform3s(Vec3s(-1.25, 0, 0));
1520
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 contact << -1.875, 0, 0;
1521 2 depth = -1.25;
1522
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 normal << -1, 0, 0;
1523 2 SET_LINE;
1524
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1525
1526
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1527
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-1.25, 0, 0));
1528
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-1.875, 0, 0));
1529 2 depth = -1.25;
1530
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1531 2 SET_LINE;
1532
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1533
1534
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1535
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 tf2 = Transform3s(Vec3s(Scalar(2.51), 0, 0));
1536
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 contact << Scalar(0.005), 0, 0;
1537 2 depth = Scalar(-5.01);
1538
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 normal << -1, 0, 0;
1539 2 SET_LINE;
1540
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1541
1542
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1543
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(2.51), 0, 0));
1544
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(Scalar(0.005), 0, 0));
1545 2 depth = Scalar(-5.01);
1546
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1547 2 SET_LINE;
1548
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1549
1550
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1551
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 tf2 = Transform3s(Vec3s(Scalar(-2.51), 0, 0));
1552 2 SET_LINE;
1553
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1554
1555
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1556
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-2.51), 0, 0));
1557 2 SET_LINE;
1558
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1559
1560
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 tf1 = Transform3s(transform.getRotation());
1561
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1562 2 SET_LINE;
1563
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true);
1564 2 }
1565
1566
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(collide_planebox) {
1567
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s(5, 10, 20);
1568
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane hs(Vec3s(1, 0, 0), 0);
1569
1570
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
1571
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
1572
1573
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1574
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1575
1576
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
1577 Scalar depth;
1578
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1579
1580
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1581
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1582
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s p1(2.5, 0, 0);
1583
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s p2(0, 0, 0);
1584
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 contact << (p1 + p2) / 2;
1585 2 depth = -2.5;
1586
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 normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
1587 2 SET_LINE;
1588
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1589
1590
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1591
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1592
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 contact = transform.transform((p1 + p2) / 2);
1593 2 depth = -2.5;
1594
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
1595 2 SET_LINE;
1596
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1597
1598
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1599
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 tf2 = Transform3s(Vec3s(1.25, 0, 0));
1600
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 p2 << 1.25, 0, 0;
1601
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 contact << (p1 + p2) / 2;
1602 2 depth = -1.25;
1603
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 normal << 1, 0, 0;
1604 2 SET_LINE;
1605
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1606
1607
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1608
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(1.25, 0, 0));
1609
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 contact = transform.transform((p1 + p2) / 2);
1610 2 depth = -1.25;
1611
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
1612 2 SET_LINE;
1613
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1614
1615
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1616
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 tf2 = Transform3s(Vec3s(-1.25, 0, 0));
1617
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 p1 << -2.5, 0, 0;
1618
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 p2 << -1.25, 0, 0;
1619
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 contact << (p1 + p2) / 2;
1620 2 depth = -1.25;
1621
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 normal << -1, 0, 0;
1622 2 SET_LINE;
1623
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1624
1625
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1626
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-1.25, 0, 0));
1627
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 contact = transform.transform((p1 + p2) / 2);
1628 2 depth = -1.25;
1629
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1630 2 SET_LINE;
1631
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1632
1633
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1634
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 tf2 = Transform3s(Vec3s(Scalar(2.51), 0, 0));
1635 2 SET_LINE;
1636
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1637
1638
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1639
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(2.51), 0, 0));
1640 2 SET_LINE;
1641
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1642
1643
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1644
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 tf2 = Transform3s(Vec3s(Scalar(-2.51), 0, 0));
1645 2 SET_LINE;
1646
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1647
1648
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1649
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-2.51), 0, 0));
1650 2 SET_LINE;
1651
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1652
1653
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 tf1 = Transform3s(transform.getRotation());
1654
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1655 2 SET_LINE;
1656
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true);
1657 2 }
1658
1659
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(collide_halfspacecapsule) {
1660
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Capsule s(5, 10);
1661
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace hs(Vec3s(1, 0, 0), 0);
1662
1663
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
1664
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
1665
1666
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1667
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1668
1669
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
1670 Scalar depth;
1671
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1672
1673
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1674
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1675
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 contact << -2.5, 0, 0;
1676 2 depth = -5;
1677
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 normal << -1, 0, 0;
1678 2 SET_LINE;
1679
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1680
1681
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1682
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1683
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-2.5, 0, 0));
1684 2 depth = -5;
1685
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1686 2 SET_LINE;
1687
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1688
1689
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1690
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 tf2 = Transform3s(Vec3s(2.5, 0, 0));
1691
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 contact << -1.25, 0, 0;
1692 2 depth = -7.5;
1693
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 normal << -1, 0, 0;
1694 2 SET_LINE;
1695
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1696
1697
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1698
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(2.5, 0, 0));
1699
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-1.25, 0, 0));
1700 2 depth = -7.5;
1701
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1702 2 SET_LINE;
1703
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1704
1705
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1706
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 tf2 = Transform3s(Vec3s(-2.5, 0, 0));
1707
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 contact << -3.75, 0, 0;
1708 2 depth = -2.5;
1709
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 normal << -1, 0, 0;
1710 2 SET_LINE;
1711
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1712
1713
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1714
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-2.5, 0, 0));
1715
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-3.75, 0, 0));
1716 2 depth = -2.5;
1717
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1718 2 SET_LINE;
1719
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1720
1721
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1722
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 tf2 = Transform3s(Vec3s(Scalar(5.1), 0, 0));
1723
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 contact << Scalar(0.05), 0, 0;
1724 2 depth = Scalar(-10.1);
1725
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 normal << -1, 0, 0;
1726 2 SET_LINE;
1727
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1728
1729
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1730
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(5.1), 0, 0));
1731
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(Scalar(0.05), 0, 0));
1732 2 depth = Scalar(-10.1);
1733
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1734 2 SET_LINE;
1735
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1736
1737
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1738
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 tf2 = Transform3s(Vec3s(Scalar(-5.1), 0, 0));
1739 2 SET_LINE;
1740
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1741
1742
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1743
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-5.1), 0, 0));
1744 2 SET_LINE;
1745
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1746
1747
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 hs = Halfspace(Vec3s(0, 1, 0), 0);
1748
1749
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1750
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1751
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 contact << 0, -2.5, 0;
1752 2 depth = -5;
1753
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 normal << 0, -1, 0;
1754 2 SET_LINE;
1755
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1756
1757
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1758
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1759
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -2.5, 0));
1760 2 depth = -5;
1761
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
1762 2 SET_LINE;
1763
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1764
1765
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1766
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 tf2 = Transform3s(Vec3s(0, 2.5, 0));
1767
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 contact << 0, -1.25, 0;
1768 2 depth = -7.5;
1769
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 normal << 0, -1, 0;
1770 2 SET_LINE;
1771
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1772
1773
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1774
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 2.5, 0));
1775
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -1.25, 0));
1776 2 depth = -7.5;
1777
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
1778 2 SET_LINE;
1779
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1780
1781
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1782
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 tf2 = Transform3s(Vec3s(0, -2.5, 0));
1783
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 contact << 0, -3.75, 0;
1784 2 depth = -2.5;
1785
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 normal << 0, -1, 0;
1786 2 SET_LINE;
1787
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1788
1789
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1790
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, -2.5, 0));
1791
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -3.75, 0));
1792 2 depth = -2.5;
1793
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
1794 2 SET_LINE;
1795
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1796
1797
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1798
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 tf2 = Transform3s(Vec3s(0, Scalar(5.1), 0));
1799
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 contact << 0, Scalar(0.05), 0;
1800 2 depth = Scalar(-10.1);
1801
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 normal << 0, -1, 0;
1802 2 SET_LINE;
1803
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1804
1805
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1806
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(5.1), 0));
1807
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, Scalar(0.05), 0));
1808 2 depth = Scalar(-10.1);
1809
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
1810 2 SET_LINE;
1811
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1812
1813
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1814
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 tf2 = Transform3s(Vec3s(0, Scalar(-5.1), 0));
1815 2 SET_LINE;
1816
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1817
1818
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1819
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(-5.1), 0));
1820 2 SET_LINE;
1821
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1822
1823
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 hs = Halfspace(Vec3s(0, 0, 1), 0);
1824
1825
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1826
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1827
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 contact << 0, 0, -5;
1828 2 depth = -10;
1829
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 normal << 0, 0, -1;
1830 2 SET_LINE;
1831
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1832
1833
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1834
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1835
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -5));
1836 2 depth = -10;
1837
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
1838 2 SET_LINE;
1839
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1840
1841
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1842
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 tf2 = Transform3s(Vec3s(0, 0, 2.5));
1843
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 contact << 0, 0, -3.75;
1844 2 depth = -12.5;
1845
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 normal << 0, 0, -1;
1846 2 SET_LINE;
1847
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1848
1849
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1850
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, 2.5));
1851
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -3.75));
1852 2 depth = -12.5;
1853
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
1854 2 SET_LINE;
1855
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1856
1857
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1858
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 tf2 = Transform3s(Vec3s(0, 0, -2.5));
1859
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 contact << 0, 0, -6.25;
1860 2 depth = -7.5;
1861
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 normal << 0, 0, -1;
1862 2 SET_LINE;
1863
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1864
1865
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1866
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, -2.5));
1867
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -6.25));
1868 2 depth = -7.5;
1869
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
1870 2 SET_LINE;
1871
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1872
1873
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1874
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(10.1)));
1875
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 contact << 0, 0, Scalar(0.05);
1876 2 depth = Scalar(-20.1);
1877
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 normal << 0, 0, -1;
1878 2 SET_LINE;
1879
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1880
1881
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1882
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(10.1)));
1883
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, Scalar(0.05)));
1884 2 depth = Scalar(-20.1);
1885
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
1886 2 SET_LINE;
1887
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
1888
1889
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1890
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(-10.1)));
1891 2 SET_LINE;
1892
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1893
1894
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1895
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(-10.1)));
1896 2 SET_LINE;
1897
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1898 2 }
1899
1900
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(collide_planecapsule) {
1901
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Capsule s(5, 10);
1902
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane hs(Vec3s(1, 0, 0), 0);
1903
1904
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
1905
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
1906
1907
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
1908
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
1909
1910
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
1911 Scalar depth;
1912
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
1913
1914
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1915
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1916
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 contact << 0, 0, 0;
1917 2 depth = -5;
1918
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 normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
1919 2 SET_LINE;
1920
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, 0x0, 0x0, true);
1921
1922
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1923
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1924
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, 0));
1925 2 depth = -5;
1926
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
1927 2 SET_LINE;
1928
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, 0x0, 0x0, true);
1929
1930
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1931
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 tf2 = Transform3s(Vec3s(2.5, 0, 0));
1932
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 contact << 2.5, 0, 0;
1933 2 depth = -2.5;
1934
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 normal << 1, 0, 0;
1935 2 SET_LINE;
1936
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal);
1937
1938
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1939
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(2.5, 0, 0));
1940
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(2.5, 0, 0));
1941 2 depth = -2.5;
1942
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
1943 2 SET_LINE;
1944
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal);
1945
1946
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1947
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 tf2 = Transform3s(Vec3s(-2.5, 0, 0));
1948
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 contact << -2.5, 0, 0;
1949 2 depth = -2.5;
1950
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 normal << -1, 0, 0;
1951 2 SET_LINE;
1952
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal);
1953
1954
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1955
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-2.5, 0, 0));
1956
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-2.5, 0, 0));
1957 2 depth = -2.5;
1958
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
1959 2 SET_LINE;
1960
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal);
1961
1962
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1963
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 tf2 = Transform3s(Vec3s(Scalar(5.1), 0, 0));
1964 2 SET_LINE;
1965
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1966
1967
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1968
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(5.1), 0, 0));
1969 2 SET_LINE;
1970
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1971
1972
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1973
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 tf2 = Transform3s(Vec3s(Scalar(-5.1), 0, 0));
1974 2 SET_LINE;
1975
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1976
1977
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1978
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-5.1), 0, 0));
1979 2 SET_LINE;
1980
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
1981
1982
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 hs = Plane(Vec3s(0, 1, 0), 0);
1983
1984
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
1985
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
1986
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 contact << 0, 0, 0;
1987 2 depth = -5;
1988
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 normal << 0, 1, 0; // (0, 1, 0) or (0, -1, 0)
1989 2 SET_LINE;
1990
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0, true);
1991
1992
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
1993
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
1994
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, 0));
1995 2 depth = -5;
1996
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0); // (0, 1, 0) or (0, -1, 0)
1997 2 SET_LINE;
1998
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal, true);
1999
2000
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2001
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 tf2 = Transform3s(Vec3s(0, 2.5, 0));
2002
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 contact << 0, 2.5, 0;
2003 2 depth = -2.5;
2004
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 normal << 0, 1, 0;
2005 2 SET_LINE;
2006
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0);
2007
2008
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2009
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 2.5, 0));
2010
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 2.5, 0));
2011 2 depth = -2.5;
2012
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0);
2013 2 SET_LINE;
2014
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0);
2015
2016
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2017
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 tf2 = Transform3s(Vec3s(0, -2.5, 0));
2018
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 contact << 0, -2.5, 0;
2019 2 depth = -2.5;
2020
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 normal << 0, -1, 0;
2021 2 SET_LINE;
2022
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal);
2023
2024
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2025
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, -2.5, 0));
2026
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -2.5, 0));
2027 2 depth = -2.5;
2028
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2029 2 SET_LINE;
2030
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, &normal);
2031
2032
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2033
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 tf2 = Transform3s(Vec3s(0, Scalar(5.1), 0));
2034 2 SET_LINE;
2035
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2036
2037
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2038
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(5.1), 0));
2039 2 SET_LINE;
2040
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2041
2042
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2043
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 tf2 = Transform3s(Vec3s(0, Scalar(-5.1), 0));
2044 2 SET_LINE;
2045
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2046
2047
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2048
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(-5.1), 0));
2049 2 SET_LINE;
2050
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2051
2052
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 hs = Plane(Vec3s(0, 0, 1), 0);
2053
2054
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2055
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2056
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 contact << 0, 0, 0;
2057 2 depth = -10;
2058
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 normal << 0, 0, 1; // (0, 0, 1) or (0, 0, -1)
2059 2 SET_LINE;
2060
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, 0x0, 0x0, true);
2061
2062
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2063
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2064
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, 0));
2065 2 depth = -10;
2066
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1); // (0, 0, 1) or (0, 0, -1)
2067 2 SET_LINE;
2068
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0, true);
2069
2070
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2071
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 tf2 = Transform3s(Vec3s(0, 0, 2.5));
2072
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 contact << 0, 0, 2.5;
2073 2 depth = -7.5;
2074
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 normal << 0, 0, 1;
2075 2 SET_LINE;
2076
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0);
2077
2078
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2079
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, 2.5));
2080
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, 2.5));
2081 2 depth = -7.5;
2082
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1);
2083 2 SET_LINE;
2084
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0);
2085
2086
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2087
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 tf2 = Transform3s(Vec3s(0, 0, -2.5));
2088
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 contact << 0, 0, -2.5;
2089 2 depth = -7.5;
2090
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 normal << 0, 0, -1;
2091 2 SET_LINE;
2092
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0);
2093
2094
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2095
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, -2.5));
2096
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -2.5));
2097 2 depth = -7.5;
2098
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2099 2 SET_LINE;
2100
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, 0x0, &depth, 0x0);
2101
2102
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2103
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(10.1)));
2104 2 SET_LINE;
2105
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2106
2107
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2108
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(10.1)));
2109 2 SET_LINE;
2110
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2111
2112
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2113
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(-10.1)));
2114 2 SET_LINE;
2115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2116
2117
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2118
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(-10.1)));
2119 2 SET_LINE;
2120
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2121 2 }
2122
2123
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(collide_halfspacecylinder) {
2124
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s(5, 10);
2125
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace hs(Vec3s(1, 0, 0), 0);
2126
2127
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
2128
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
2129
2130
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
2131
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
2132
2133
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
2134 Scalar depth;
2135
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
2136
2137
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2138
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2139
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 contact << -2.5, 0, 0;
2140 2 depth = -5;
2141
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 normal << -1, 0, 0;
2142 2 SET_LINE;
2143
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2144
2145
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2146
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2147
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-2.5, 0, 0));
2148 2 depth = -5;
2149
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2150 2 SET_LINE;
2151
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2152
2153
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2154
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 tf2 = Transform3s(Vec3s(2.5, 0, 0));
2155
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 contact << -1.25, 0, 0;
2156 2 depth = -7.5;
2157
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 normal << -1, 0, 0;
2158 2 SET_LINE;
2159
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2160
2161
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2162
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(2.5, 0, 0));
2163
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-1.25, 0, 0));
2164 2 depth = -7.5;
2165
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2166 2 SET_LINE;
2167
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2168
2169
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2170
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 tf2 = Transform3s(Vec3s(-2.5, 0, 0));
2171
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 contact << -3.75, 0, 0;
2172 2 depth = -2.5;
2173
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 normal << -1, 0, 0;
2174 2 SET_LINE;
2175
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2176
2177
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2178
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-2.5, 0, 0));
2179
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-3.75, 0, 0));
2180 2 depth = -2.5;
2181
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2182 2 SET_LINE;
2183
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2184
2185
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2186
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 tf2 = Transform3s(Vec3s(Scalar(5.1), 0, 0));
2187
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 contact << Scalar(0.05), 0, 0;
2188 2 depth = Scalar(-10.1);
2189
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 normal << -1, 0, 0;
2190 2 SET_LINE;
2191
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2192
2193
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2194
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(5.1), 0, 0));
2195
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(Scalar(0.05), 0, 0));
2196 2 depth = Scalar(-10.1);
2197
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2198 2 SET_LINE;
2199
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2200
2201
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2202
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 tf2 = Transform3s(Vec3s(Scalar(-5.1), 0, 0));
2203 2 SET_LINE;
2204
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2205
2206
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2207
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-5.1), 0, 0));
2208 2 SET_LINE;
2209
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2210
2211
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 hs = Halfspace(Vec3s(0, 1, 0), 0);
2212
2213
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2214
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2215
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 contact << 0, -2.5, 0;
2216 2 depth = -5;
2217
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 normal << 0, -1, 0;
2218 2 SET_LINE;
2219
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2220
2221
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2222
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2223
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -2.5, 0));
2224 2 depth = -5;
2225
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2226 2 SET_LINE;
2227
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2228
2229
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2230
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 tf2 = Transform3s(Vec3s(0, 2.5, 0));
2231
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 contact << 0, -1.25, 0;
2232 2 depth = -7.5;
2233
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 normal << 0, -1, 0;
2234 2 SET_LINE;
2235
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2236
2237
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2238
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 2.5, 0));
2239
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -1.25, 0));
2240 2 depth = -7.5;
2241
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2242 2 SET_LINE;
2243
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2244
2245
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2246
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 tf2 = Transform3s(Vec3s(0, -2.5, 0));
2247
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 contact << 0, -3.75, 0;
2248 2 depth = -2.5;
2249
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 normal << 0, -1, 0;
2250 2 SET_LINE;
2251
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2252
2253
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2254
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, -2.5, 0));
2255
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -3.75, 0));
2256 2 depth = -2.5;
2257
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2258 2 SET_LINE;
2259
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2260
2261
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2262
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 tf2 = Transform3s(Vec3s(0, Scalar(5.1), 0));
2263
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 contact << 0, Scalar(0.05), 0;
2264 2 depth = Scalar(-10.1);
2265
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 normal << 0, -1, 0;
2266 2 SET_LINE;
2267
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2268
2269
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2270
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(5.1), 0));
2271
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, Scalar(0.05), 0));
2272 2 depth = Scalar(-10.1);
2273
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2274 2 SET_LINE;
2275
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2276
2277
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2278
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 tf2 = Transform3s(Vec3s(0, Scalar(-5.1), 0));
2279 2 SET_LINE;
2280
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2281
2282
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2283
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(-5.1), 0));
2284 2 SET_LINE;
2285
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2286
2287
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 hs = Halfspace(Vec3s(0, 0, 1), 0);
2288
2289
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2290
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2291
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 contact << 0, 0, -2.5;
2292 2 depth = -5;
2293
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 normal << 0, 0, -1;
2294 2 SET_LINE;
2295
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2296
2297
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2298
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2299
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -2.5));
2300 2 depth = -5;
2301
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2302 2 SET_LINE;
2303
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2304
2305
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2306
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 tf2 = Transform3s(Vec3s(0, 0, 2.5));
2307
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 contact << 0, 0, -1.25;
2308 2 depth = -7.5;
2309
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 normal << 0, 0, -1;
2310 2 SET_LINE;
2311
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2312
2313
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2314
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, 2.5));
2315
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -1.25));
2316 2 depth = -7.5;
2317
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2318 2 SET_LINE;
2319
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2320
2321
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2322
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 tf2 = Transform3s(Vec3s(0, 0, -2.5));
2323
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 contact << 0, 0, -3.75;
2324 2 depth = -2.5;
2325
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 normal << 0, 0, -1;
2326 2 SET_LINE;
2327
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2328
2329
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2330
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, -2.5));
2331
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -3.75));
2332 2 depth = -2.5;
2333
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2334 2 SET_LINE;
2335
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2336
2337
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2338
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(5.1)));
2339
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 contact << 0, 0, Scalar(0.05);
2340 2 depth = Scalar(-10.1);
2341
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 normal << 0, 0, -1;
2342 2 SET_LINE;
2343
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2344
2345
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2346
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(5.1)));
2347
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, Scalar(0.05)));
2348 2 depth = Scalar(-10.1);
2349
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2350 2 SET_LINE;
2351
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2352
2353
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2354
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(-5.1)));
2355 2 SET_LINE;
2356
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2357
2358
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2359
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(-5.1)));
2360 2 SET_LINE;
2361
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2362 2 }
2363
2364
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(collide_planecylinder) {
2365
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s(5, 10);
2366
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane hs(Vec3s(1, 0, 0), 0);
2367
2368
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
2369
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
2370
2371
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
2372
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
2373
2374
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
2375 Scalar depth;
2376
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
2377
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Vec3s p1, p2;
2378
2379 2 Scalar eps = Scalar(1e-6);
2380
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 tf1 = Transform3s(Vec3s(eps, 0, 0));
2381
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2382
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 p1 << -5 + eps, 0, 0;
2383
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 p2 << 0, 0, 0;
2384
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 contact << (p1 + p2) / 2;
2385 2 depth = -5 + eps;
2386
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 normal << -1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
2387 2 SET_LINE;
2388
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2389
2390
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2391
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2392
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 contact = transform.transform((p1 + p2) / 2);
2393 2 depth = -5 + eps;
2394 normal =
2395
3/6
✓ 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.
2 transform.getRotation() * Vec3s(-1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
2396 2 SET_LINE;
2397
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2398
2399 2 eps = Scalar(-1e-6);
2400
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 tf1 = Transform3s(Vec3s(eps, 0, 0));
2401
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2402
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 p1 << 5 + eps, 0, 0;
2403
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 p2 << 0, 0, 0;
2404
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 contact << (p1 + p2) / 2;
2405 2 depth = -5 - eps;
2406
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 normal << -1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
2407 2 SET_LINE;
2408
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2409
2410
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2411
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2412
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 contact = transform.transform((p1 + p2) / 2);
2413 2 depth = -5 - eps;
2414 normal =
2415
3/6
✓ 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.
2 transform.getRotation() * Vec3s(-1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
2416 2 SET_LINE;
2417
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2418
2419
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2420
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 tf2 = Transform3s(Vec3s(2.5, 0, 0));
2421
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 p1 << 5, 0, 0;
2422
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 p2 << 2.5, 0, 0;
2423
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 contact << (p1 + p2) / 2;
2424 2 depth = -2.5;
2425
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 normal << 1, 0, 0;
2426 2 SET_LINE;
2427
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2428
2429
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2430
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(2.5, 0, 0));
2431
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 contact = transform.transform((p1 + p2) / 2);
2432 2 depth = -2.5;
2433
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
2434 2 SET_LINE;
2435
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2436
2437
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2438
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 tf2 = Transform3s(Vec3s(-2.5, 0, 0));
2439
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 p1 << -5, 0, 0;
2440
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 p2 << -2.5, 0, 0;
2441
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 contact << (p1 + p2) / 2;
2442 2 depth = -2.5;
2443
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 normal << -1, 0, 0;
2444 2 SET_LINE;
2445
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2446
2447
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2448
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-2.5, 0, 0));
2449
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 contact = transform.transform((p1 + p2) / 2);
2450 2 depth = -2.5;
2451
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2452 2 SET_LINE;
2453
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2454
2455
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2456
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 tf2 = Transform3s(Vec3s(Scalar(5.1), 0, 0));
2457 2 SET_LINE;
2458
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2459
2460
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2461
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(5.1), 0, 0));
2462 2 SET_LINE;
2463
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2464
2465
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2466
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 tf2 = Transform3s(Vec3s(Scalar(-5.1), 0, 0));
2467 2 SET_LINE;
2468
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2469
2470
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2471
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-5.1), 0, 0));
2472 2 SET_LINE;
2473
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2474
2475
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 hs = Plane(Vec3s(0, 1, 0), 0);
2476
2477 2 eps = Scalar(1e-6);
2478
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 tf1 = Transform3s(Vec3s(0, eps, 0));
2479
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2480
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 p1 << 0, -5 + eps, 0;
2481
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 p2 << 0, 0, 0;
2482
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 contact << (p1 + p2) / 2;
2483 2 depth = -5 + eps;
2484
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 normal << 0, 1, 0; // (1, 0, 0) or (-1, 0, 0)
2485 2 SET_LINE;
2486
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2487
2488
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2489
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2490
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 contact = transform.transform((p1 + p2) / 2);
2491 2 depth = -5 + eps;
2492
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0); // (1, 0, 0) or (-1, 0, 0)
2493 2 SET_LINE;
2494
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2495
2496 2 eps = Scalar(-1e-6);
2497
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 tf1 = Transform3s(Vec3s(0, eps, 0));
2498
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2499
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 p1 << 0, 5 + eps, 0;
2500
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 p2 << 0, 0, 0;
2501
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 contact << (p1 + p2) / 2;
2502 2 depth = -5 - eps;
2503
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 normal << 0, 1, 0; // (1, 0, 0) or (-1, 0, 0)
2504 2 SET_LINE;
2505
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2506
2507
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2508
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2509
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 contact = transform.transform((p1 + p2) / 2);
2510 2 depth = -5 - eps;
2511
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0); // (1, 0, 0) or (-1, 0, 0)
2512 2 SET_LINE;
2513
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2514
2515
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2516
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 tf2 = Transform3s(Vec3s(0, 2.5, 0));
2517
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 p1 << 0, 5, 0;
2518
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 p2 << 0, 2.5, 0;
2519
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 contact << (p1 + p2) / 2;
2520 2 depth = -2.5;
2521
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 normal << 0, 1, 0;
2522 2 SET_LINE;
2523
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2524
2525
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2526
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 2.5, 0));
2527
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 contact = transform.transform((p1 + p2) / 2);
2528 2 depth = -2.5;
2529
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0);
2530 2 SET_LINE;
2531
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2532
2533
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2534
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 tf2 = Transform3s(Vec3s(0, -2.5, 0));
2535
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 p1 << 0, -5, 0;
2536
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 p2 << 0, -2.5, 0;
2537
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 contact << (p1 + p2) / 2;
2538 2 depth = -2.5;
2539
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 normal << 0, -1, 0;
2540 2 SET_LINE;
2541
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2542
2543
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2544
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, -2.5, 0));
2545
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 contact = transform.transform((p1 + p2) / 2);
2546 2 depth = -2.5;
2547
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2548 2 SET_LINE;
2549
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2550
2551
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2552
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 tf2 = Transform3s(Vec3s(0, Scalar(5.1), 0));
2553 2 SET_LINE;
2554
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2555
2556
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2557
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(5.1), 0));
2558 2 SET_LINE;
2559
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2560
2561
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2562
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 tf2 = Transform3s(Vec3s(0, Scalar(-5.1), 0));
2563 2 SET_LINE;
2564
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2565
2566
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2567
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(-5.1), 0));
2568 2 SET_LINE;
2569
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2570
2571
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 hs = Plane(Vec3s(0, 0, 1), 0);
2572
2573 2 eps = Scalar(1e-6);
2574
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 tf1 = Transform3s(Vec3s(0, 0, eps));
2575
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2576
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 p1 << 0, 0, -5 + eps;
2577
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 p2 << 0, 0, 0;
2578
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 contact << (p1 + p2) / 2;
2579 2 depth = -5 + eps;
2580
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 normal << 0, 0, 1; // (1, 0, 0) or (-1, 0, 0)
2581 2 SET_LINE;
2582
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2583
2584
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2585
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2586
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 contact = transform.transform((p1 + p2) / 2);
2587 2 depth = -5 + eps;
2588
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1); // (1, 0, 0) or (-1, 0, 0)
2589 2 SET_LINE;
2590
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2591
2592 2 eps = Scalar(-1e-6);
2593
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 tf1 = Transform3s(Vec3s(0, 0, eps));
2594
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2595
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 p1 << 0, 0, 5 + eps;
2596
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 p2 << 0, 0, 0;
2597
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 contact << (p1 + p2) / 2;
2598 2 depth = -5 - eps;
2599
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 normal << 0, 0, 1; // (1, 0, 0) or (-1, 0, 0)
2600 2 SET_LINE;
2601
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2602
2603
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2604
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2605
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 contact = transform.transform((p1 + p2) / 2);
2606 2 depth = -5 - eps;
2607
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1); // (1, 0, 0) or (-1, 0, 0)
2608 2 SET_LINE;
2609
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2610
2611
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2612
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 tf2 = Transform3s(Vec3s(0, 0, 2.5));
2613
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 p1 << 0, 0, 5;
2614
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 p2 << 0, 0, 2.5;
2615
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 contact << (p1 + p2) / 2;
2616 2 depth = -2.5;
2617
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 normal << 0, 0, 1;
2618 2 SET_LINE;
2619
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2620
2621
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2622
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, 2.5));
2623
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 contact = transform.transform((p1 + p2) / 2);
2624 2 depth = -2.5;
2625
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1);
2626 2 SET_LINE;
2627
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2628
2629
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2630
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 tf2 = Transform3s(Vec3s(0, 0, -2.5));
2631
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 p1 << 0, 0, -5.;
2632
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 p2 << 0, 0, -2.5;
2633
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 contact << (p1 + p2) / 2;
2634 2 depth = -2.5;
2635
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 normal << 0, 0, -1;
2636 2 SET_LINE;
2637
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2638
2639
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2640
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, -2.5));
2641
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 contact = transform.transform((p1 + p2) / 2);
2642 2 depth = -2.5;
2643
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2644 2 SET_LINE;
2645
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2646
2647
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2648
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(10.1)));
2649 2 SET_LINE;
2650
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2651
2652
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2653
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(10.1)));
2654 2 SET_LINE;
2655
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2656
2657
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2658
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(-10.1)));
2659 2 SET_LINE;
2660
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2661
2662
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2663
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(-10.1)));
2664 2 SET_LINE;
2665
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2666 2 }
2667
2668
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(collide_halfspacecone) {
2669
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s(5, 10);
2670
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace hs(Vec3s(1, 0, 0), 0);
2671
2672
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
2673
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
2674
2675
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
2676
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
2677
2678
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
2679 Scalar depth;
2680
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
2681
2682
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2683
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2684
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 contact << -2.5, 0, -5;
2685 2 depth = -5;
2686
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 normal << -1, 0, 0;
2687 2 SET_LINE;
2688
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2689
2690
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2691
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2692
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-2.5, 0, -5));
2693 2 depth = -5;
2694
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2695 2 SET_LINE;
2696
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2697
2698
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2699
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 tf2 = Transform3s(Vec3s(2.5, 0, 0));
2700
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 contact << -1.25, 0, -5;
2701 2 depth = -7.5;
2702
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 normal << -1, 0, 0;
2703 2 SET_LINE;
2704
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2705
2706
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2707
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(2.5, 0, 0));
2708
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-1.25, 0, -5));
2709 2 depth = -7.5;
2710
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2711 2 SET_LINE;
2712
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2713
2714
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2715
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 tf2 = Transform3s(Vec3s(-2.5, 0, 0));
2716
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 contact << -3.75, 0, -5;
2717 2 depth = -2.5;
2718
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 normal << -1, 0, 0;
2719 2 SET_LINE;
2720
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2721
2722
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2723
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-2.5, 0, 0));
2724
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(-3.75, 0, -5));
2725 2 depth = -2.5;
2726
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2727 2 SET_LINE;
2728
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2729
2730
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2731
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 tf2 = Transform3s(Vec3s(Scalar(5.1), 0, 0));
2732
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 contact << Scalar(0.05), 0, -5;
2733 2 depth = Scalar(-10.1);
2734
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 normal << -1, 0, 0;
2735 2 SET_LINE;
2736
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2737
2738
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2739
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(5.1), 0, 0));
2740
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(Scalar(0.05), 0, -5));
2741 2 depth = Scalar(-10.1);
2742
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2743 2 SET_LINE;
2744
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2745
2746
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2747
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 tf2 = Transform3s(Vec3s(Scalar(-5.1), 0, 0));
2748 2 SET_LINE;
2749
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2750
2751
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2752
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-5.1), 0, 0));
2753 2 SET_LINE;
2754
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2755
2756
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 hs = Halfspace(Vec3s(0, 1, 0), 0);
2757
2758
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2759
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2760
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 contact << 0, -2.5, -5;
2761 2 depth = -5;
2762
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 normal << 0, -1, 0;
2763 2 SET_LINE;
2764
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2765
2766
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2767
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2768
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -2.5, -5));
2769 2 depth = -5;
2770
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2771 2 SET_LINE;
2772
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2773
2774
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2775
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 tf2 = Transform3s(Vec3s(0, 2.5, 0));
2776
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 contact << 0, -1.25, -5;
2777 2 depth = -7.5;
2778
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 normal << 0, -1, 0;
2779 2 SET_LINE;
2780
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2781
2782
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2783
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 2.5, 0));
2784
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -1.25, -5));
2785 2 depth = -7.5;
2786
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2787 2 SET_LINE;
2788
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2789
2790
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2791
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 tf2 = Transform3s(Vec3s(0, -2.5, 0));
2792
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 contact << 0, -3.75, -5;
2793 2 depth = -2.5;
2794
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 normal << 0, -1, 0;
2795 2 SET_LINE;
2796
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2797
2798
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2799
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, -2.5, 0));
2800
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, -3.75, -5));
2801 2 depth = -2.5;
2802
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2803 2 SET_LINE;
2804
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2805
2806
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2807
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 tf2 = Transform3s(Vec3s(0, Scalar(5.1), 0));
2808
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 contact << 0, Scalar(0.05), -5;
2809 2 depth = Scalar(-10.1);
2810
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 normal << 0, -1, 0;
2811 2 SET_LINE;
2812
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2813
2814
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2815
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(5.1), 0));
2816
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, Scalar(0.05), -5));
2817 2 depth = Scalar(-10.1);
2818
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
2819 2 SET_LINE;
2820
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2821
2822
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2823
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 tf2 = Transform3s(Vec3s(0, Scalar(-5.1), 0));
2824 2 SET_LINE;
2825
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2826
2827
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2828
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(-5.1), 0));
2829 2 SET_LINE;
2830
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2831
2832
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 hs = Halfspace(Vec3s(0, 0, 1), 0);
2833
2834
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2835
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2836
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 contact << 0, 0, -2.5;
2837 2 depth = -5;
2838
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 normal << 0, 0, -1;
2839 2 SET_LINE;
2840
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2841
2842
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2843
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2844
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -2.5));
2845 2 depth = -5;
2846
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2847 2 SET_LINE;
2848
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2849
2850
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2851
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 tf2 = Transform3s(Vec3s(0, 0, 2.5));
2852
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 contact << 0, 0, -1.25;
2853 2 depth = -7.5;
2854
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 normal << 0, 0, -1;
2855 2 SET_LINE;
2856
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2857
2858
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2859
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, 2.5));
2860
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -1.25));
2861 2 depth = -7.5;
2862
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2863 2 SET_LINE;
2864
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2865
2866
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2867
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 tf2 = Transform3s(Vec3s(0, 0, -2.5));
2868
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 contact << 0, 0, -3.75;
2869 2 depth = -2.5;
2870
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 normal << 0, 0, -1;
2871 2 SET_LINE;
2872
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2873
2874
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2875
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, -2.5));
2876
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, -3.75));
2877 2 depth = -2.5;
2878
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2879 2 SET_LINE;
2880
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2881
2882
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2883
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(5.1)));
2884
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 contact << 0, 0, Scalar(0.05);
2885 2 depth = Scalar(-10.1);
2886
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 normal << 0, 0, -1;
2887 2 SET_LINE;
2888
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2889
2890
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2891
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(5.1)));
2892
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = transform.transform(Vec3s(0, 0, Scalar(0.05)));
2893 2 depth = Scalar(-10.1);
2894
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
2895 2 SET_LINE;
2896
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2897
2898
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2899
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(-5.1)));
2900 2 SET_LINE;
2901
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2902
2903
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2904
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(-5.1)));
2905 2 SET_LINE;
2906
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
2907 2 }
2908
2909
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(collide_planecone) {
2910
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s(5, 10);
2911
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane hs(Vec3s(1, 0, 0), 0);
2912
2913
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
2914
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
2915
2916
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
2917
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
2918
2919
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
2920 Scalar depth;
2921
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
2922
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Vec3s p1, p2;
2923
2924 2 Scalar eps = Scalar(1e-6);
2925
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 tf1 = Transform3s(Vec3s(eps, 0, 0));
2926
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2927
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 p1 << -5 + eps, 0, -5;
2928
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 p2 << 0, 0, -5;
2929
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 contact << (p1 + p2) / 2;
2930 2 depth = -5 + eps;
2931
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 normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
2932 2 SET_LINE;
2933
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2934
2935
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2936
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2937
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 contact = transform.transform((p1 + p2) / 2);
2938 2 depth = -5 + eps;
2939 normal =
2940
3/6
✓ 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.
2 transform.getRotation() * Vec3s(-1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
2941 2 SET_LINE;
2942
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2943
2944 2 eps = Scalar(-1e-6);
2945
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 tf1 = Transform3s(Vec3s(eps, 0, 0));
2946
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
2947
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 p1 << 5 + eps, 0, -5;
2948
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 p2 << 0, 0, -5;
2949
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 contact << (p1 + p2) / 2;
2950 2 depth = -5 - eps;
2951
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 normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0)
2952 2 SET_LINE;
2953
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2954
2955
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
2956
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
2957
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 contact = transform.transform((p1 + p2) / 2);
2958 2 depth = -5 - eps;
2959 normal =
2960
3/6
✓ 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.
2 transform.getRotation() * Vec3s(-1, 0, 0); // (1, 0, 0) or (-1, 0, 0)
2961 2 SET_LINE;
2962
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
2963
2964
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2965
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 tf2 = Transform3s(Vec3s(2.5, 0, 0));
2966
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 p1 << 5, 0, -5;
2967
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 p2 << 2.5, 0, -5;
2968
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 contact << (p1 + p2) / 2;
2969 2 depth = -2.5;
2970
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 normal << 1, 0, 0;
2971 2 SET_LINE;
2972
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2973
2974
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2975
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(2.5, 0, 0));
2976
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 contact = transform.transform((p1 + p2) / 2);
2977 2 depth = -2.5;
2978
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(1, 0, 0);
2979 2 SET_LINE;
2980
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2981
2982
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
2983
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 tf2 = Transform3s(Vec3s(-2.5, 0, 0));
2984
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 p1 << -5, 0, -5;
2985
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 p2 << -2.5, 0, -5;
2986
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 contact << (p1 + p2) / 2;
2987 2 depth = -2.5;
2988
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 normal << -1, 0, 0;
2989 2 SET_LINE;
2990
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2991
2992
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
2993
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(-2.5, 0, 0));
2994
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 contact = transform.transform((p1 + p2) / 2);
2995 2 depth = -2.5;
2996
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(-1, 0, 0);
2997 2 SET_LINE;
2998
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
2999
3000
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3001
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 tf2 = Transform3s(Vec3s(Scalar(5.1), 0, 0));
3002 2 SET_LINE;
3003
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3004
3005
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3006
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(5.1), 0, 0));
3007 2 SET_LINE;
3008
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3009
3010
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3011
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 tf2 = Transform3s(Vec3s(Scalar(-5.1), 0, 0));
3012 2 SET_LINE;
3013
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3014
3015
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3016
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(Scalar(-5.1), 0, 0));
3017 2 SET_LINE;
3018
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3019
3020
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 hs = Plane(Vec3s(0, 1, 0), 0);
3021
3022 2 eps = Scalar(1e-6);
3023
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 tf1 = Transform3s(Vec3s(0, eps, 0));
3024
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
3025
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 p1 << 0, -5 + eps, -5;
3026
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 p2 << 0, 0, -5;
3027
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 contact << (p1 + p2) / 2;
3028 2 depth = -5 + eps;
3029
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 normal << 0, 1, 0; // (1, 0, 0) or (-1, 0, 0)
3030 2 SET_LINE;
3031
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3032
3033
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
3034
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3035
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 contact = transform.transform((p1 + p2) / 2);
3036 2 depth = -5 + eps;
3037
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0); // (1, 0, 0) or (-1, 0, 0)
3038 2 SET_LINE;
3039
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3040
3041 2 eps = Scalar(-1e-6);
3042
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 tf1 = Transform3s(Vec3s(0, eps, 0));
3043
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
3044
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 p1 << 0, 5 + eps, -5;
3045
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 p2 << 0, 0, -5;
3046
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 contact << (p1 + p2) / 2;
3047 2 depth = -5 - eps;
3048
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 normal << 0, 1, 0; // (1, 0, 0) or (-1, 0, 0)
3049 2 SET_LINE;
3050
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3051
3052
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
3053
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3054
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 contact = transform.transform((p1 + p2) / 2);
3055 2 depth = -5 - eps;
3056
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0); // (1, 0, 0) or (-1, 0, 0)
3057 2 SET_LINE;
3058
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3059
3060
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3061
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 tf2 = Transform3s(Vec3s(0, 2.5, 0));
3062
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 p1 << 0, 5, -5;
3063
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 p2 << 0, 2.5, -5;
3064
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 contact << (p1 + p2) / 2;
3065 2 depth = -2.5;
3066
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 normal << 0, 1, 0;
3067 2 SET_LINE;
3068
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3069
3070
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3071
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 2.5, 0));
3072
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 contact = transform.transform((p1 + p2) / 2);
3073 2 depth = -2.5;
3074
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 1, 0);
3075 2 SET_LINE;
3076
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3077
3078
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3079
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 tf2 = Transform3s(Vec3s(0, -2.5, 0));
3080
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 p1 << 0, -5, -5;
3081
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 p2 << 0, -2.5, -5;
3082
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 contact << (p1 + p2) / 2;
3083 2 depth = -2.5;
3084
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 normal << 0, -1, 0;
3085 2 SET_LINE;
3086
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3087
3088
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3089
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, -2.5, 0));
3090
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 contact = transform.transform((p1 + p2) / 2);
3091 2 depth = -2.5;
3092
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, -1, 0);
3093 2 SET_LINE;
3094
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3095
3096
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3097
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 tf2 = Transform3s(Vec3s(0, Scalar(5.1), 0));
3098 2 SET_LINE;
3099
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3100
3101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3102
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(5.1), 0));
3103 2 SET_LINE;
3104
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3105
3106
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3107
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 tf2 = Transform3s(Vec3s(0, Scalar(-5.1), 0));
3108 2 SET_LINE;
3109
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3110
3111
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3112
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, Scalar(-5.1), 0));
3113 2 SET_LINE;
3114
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3115
3116
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 hs = Plane(Vec3s(0, 0, 1), 0);
3117
3118 2 eps = Scalar(1e-6);
3119
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 tf1 = Transform3s(Vec3s(0, 0, eps));
3120
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
3121
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 p1 << 0, 0, -5 + eps;
3122
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 p2 << 0, 0, 0;
3123
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 contact << (p1 + p2) / 2;
3124 2 depth = -5 + eps;
3125
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 normal << 0, 0, 1; // (1, 0, 0) or (-1, 0, 0)
3126 2 SET_LINE;
3127
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3128
3129
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
3130
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3131
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 contact = transform.transform((p1 + p2) / 2);
3132 2 depth = -5 + eps;
3133
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1); // (1, 0, 0) or (-1, 0, 0)
3134 2 SET_LINE;
3135
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3136
3137 2 eps = Scalar(-1e-6);
3138
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 tf1 = Transform3s(Vec3s(0, 0, eps));
3139
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf2 = Transform3s();
3140
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 p1 << 0, 0, 5 + eps;
3141
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 p2 << 0, 0, 0;
3142
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 contact << (p1 + p2) / 2;
3143 2 depth = -5 - eps;
3144
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 normal << 0, 0, 1; // (1, 0, 0) or (-1, 0, 0)
3145 2 SET_LINE;
3146
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3147
3148
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = transform * tf1;
3149
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3150
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 contact = transform.transform((p1 + p2) / 2);
3151 2 depth = -5 - eps;
3152
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1); // (1, 0, 0) or (-1, 0, 0)
3153 2 SET_LINE;
3154
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal, true);
3155
3156
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3157
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 tf2 = Transform3s(Vec3s(0, 0, 2.5));
3158
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 p1 << 0, 0, 5;
3159
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 p2 << 0, 0, 2.5;
3160
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 contact << (p1 + p2) / 2;
3161 2 depth = -2.5;
3162
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 normal << 0, 0, 1;
3163 2 SET_LINE;
3164
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3165
3166
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3167
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, 2.5));
3168
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 contact = transform.transform((p1 + p2) / 2);
3169 2 depth = -2.5;
3170
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, 1);
3171 2 SET_LINE;
3172
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3173
3174
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3175
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 tf2 = Transform3s(Vec3s(0, 0, -2.5));
3176
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 p1 << 0, 0, -5;
3177
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 p2 << 0, 0, -2.5;
3178
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 contact << (p1 + p2) / 2;
3179 2 depth = -2.5;
3180
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 normal << 0, 0, -1;
3181 2 SET_LINE;
3182
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3183
3184
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3185
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, -2.5));
3186
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 contact = transform.transform((p1 + p2) / 2);
3187 2 depth = -2.5;
3188
3/6
✓ 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.
2 normal = transform.getRotation() * Vec3s(0, 0, -1);
3189 2 SET_LINE;
3190
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, true, &contact, &depth, &normal);
3191
3192
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3193
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(10.1)));
3194 2 SET_LINE;
3195
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3196
3197
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3198
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(10.1)));
3199 2 SET_LINE;
3200
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3201
3202
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 tf1 = Transform3s();
3203
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 tf2 = Transform3s(Vec3s(0, 0, Scalar(-10.1)));
3204 2 SET_LINE;
3205
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3206
3207
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3208
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 tf2 = transform * Transform3s(Vec3s(0, 0, Scalar(-10.1)));
3209 2 SET_LINE;
3210
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(s, tf1, hs, tf2, false);
3211 2 }
3212
3213
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(collide_planeplane) {
3214
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
3215
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
3216
3217
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
3218
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
3219 Scalar distance;
3220
3221
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3222
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3223
3224 {
3225
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().normalized();
3226 2 Scalar offset = Scalar(3.14);
3227
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane1(n, offset);
3228
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane2(n, offset);
3229
3230
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3231
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3232
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3233
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 contact = plane1.n * plane1.d;
3234 2 distance = 0.;
3235 2 SET_LINE;
3236
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, true, &contact, &distance,
3237 &normal);
3238
3239
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3240
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3241
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3242 contact =
3243
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 transform.getRotation() * plane1.n *
3244 (plane1.d +
3245
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
4 (transform.getRotation() * plane1.n).dot(transform.getTranslation()));
3246 2 SET_LINE;
3247
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, true, &contact, &distance,
3248 &normal);
3249 2 }
3250
3251 {
3252
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().normalized();
3253 2 Scalar offset1 = Scalar(3.14);
3254 2 Scalar offset2 = offset1 + Scalar(1.19841);
3255
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane1(n, offset1);
3256
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane2(n, offset2);
3257
3258
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3259
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3260 2 SET_LINE;
3261
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, false);
3262
3263
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3264
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3265 2 SET_LINE;
3266
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, false);
3267 2 }
3268
3269 {
3270
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().normalized();
3271 2 Scalar offset1 = Scalar(3.14);
3272 2 Scalar offset2 = offset1 - Scalar(1.19841);
3273
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane1(n, offset1);
3274
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane2(n, offset2);
3275
3276
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3277
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3278 2 SET_LINE;
3279
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, false);
3280
3281
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3282
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3283 2 SET_LINE;
3284
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, false);
3285 2 }
3286
3287 {
3288
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n1(1, 0, 0);
3289 2 Scalar offset1 = Scalar(3.14);
3290
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane1(n1, offset1);
3291
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n2(0, 0, 1);
3292 2 Scalar offset2 = Scalar(-2.13);
3293
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane2(n2, offset2);
3294
3295
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3296
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3297
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 normal << 0, -1, 0;
3298
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 contact << offset1, 0, offset2;
3299 2 SET_LINE;
3300
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, true, &contact, NULL, &normal);
3301
3302
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3303
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3304
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3305 2 SET_LINE;
3306
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, true, NULL, NULL, &normal);
3307 2 }
3308
3309 {
3310
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n1(1, 0, 0);
3311 2 Scalar offset1 = Scalar(3.14);
3312
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane1(n1, offset1);
3313
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n2(1, 1, 1);
3314 2 Scalar offset2 = Scalar(-2.13);
3315
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane2(n2, offset2);
3316
3317
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3318
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3319
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 normal << 0, Scalar(-0.5774), Scalar(0.5774);
3320 2 SET_LINE;
3321
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, true, NULL, NULL, &normal, false,
3322 Scalar(1e-3));
3323
3324
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3325
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3326
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3327 2 SET_LINE;
3328
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(plane1, tf1, plane2, tf2, true, NULL, NULL, &normal, false,
3329 Scalar(1e-3));
3330 2 }
3331 2 }
3332
3333
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(collide_halfspacehalfspace) {
3334
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
3335
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
3336
3337
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
3338
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
3339 Scalar distance;
3340
3341
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3342
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3343
3344 {
3345
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().normalized();
3346 2 Scalar offset = Scalar(3.14);
3347
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf1(n, offset);
3348
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf2(n, offset);
3349
3350
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3351
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3352
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3353 2 SET_LINE;
3354
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal);
3355
3356
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3357
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3358
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3359 2 SET_LINE;
3360
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal);
3361 2 }
3362
3363 {
3364
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().normalized();
3365 2 Scalar offset1 = Scalar(3.14);
3366 2 Scalar offset2 = offset1 + Scalar(1.19841);
3367
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf1(n, offset1);
3368
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf2(n, offset2);
3369
3370
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3371
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3372
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3373 2 SET_LINE;
3374
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal);
3375
3376
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3377
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3378
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3379 2 SET_LINE;
3380
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal);
3381 2 }
3382
3383 {
3384
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().normalized();
3385 2 Scalar offset1 = Scalar(3.14);
3386 2 Scalar offset2 = offset1 - Scalar(1.19841);
3387
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf1(n, offset1);
3388
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 Halfspace hf2(-n, -offset2);
3389
3390
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3391
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3392
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3393 2 distance = offset2 - offset1;
3394 2 SET_LINE;
3395
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, &distance, &normal);
3396
3397
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3398
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3399
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3400 2 SET_LINE;
3401
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, &distance, &normal);
3402 2 }
3403
3404 {
3405
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n1(1, 0, 0);
3406 2 Scalar offset1 = Scalar(3.14);
3407
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf1(n1, offset1);
3408
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n2(0, 0, 1);
3409 2 Scalar offset2 = Scalar(-2.13);
3410
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf2(n2, offset2);
3411
3412
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3413
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3414
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 normal << 0, -1, 0;
3415 2 SET_LINE;
3416
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal);
3417
3418
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3419
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3420
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3421 2 SET_LINE;
3422
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal);
3423 2 }
3424
3425 {
3426
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n1(1, 0, 0);
3427 2 Scalar offset1 = Scalar(3.14);
3428
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf1(n1, offset1);
3429
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n2(1, 1, 1);
3430 2 Scalar offset2 = Scalar(-2.13);
3431
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf2(n2, offset2);
3432
3433
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3434
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3435
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 normal << 0, Scalar(-0.5774), Scalar(0.5774);
3436 2 SET_LINE;
3437
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal, false,
3438 Scalar(1e-3));
3439
3440
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3441
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3442
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3443 2 SET_LINE;
3444
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf1, tf1, hf2, tf2, true, NULL, NULL, &normal, false,
3445 Scalar(1e-3));
3446 2 }
3447 2 }
3448
3449
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(collide_halfspaceplane) {
3450
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf1;
3451
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s tf2;
3452
3453
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s normal;
3454
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s contact;
3455 Scalar distance;
3456
3457
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3458
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3459
3460 {
3461
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().normalized();
3462 2 Scalar offset = Scalar(3.14);
3463
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf(n, offset);
3464
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane(n, offset);
3465
3466
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3467
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3468
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3469 2 distance = 0;
3470 2 SET_LINE;
3471
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, &distance, &normal);
3472
3473
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3474
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3475
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3476 2 SET_LINE;
3477
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, &distance, &normal);
3478 2 }
3479
3480 {
3481
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().normalized();
3482 2 Scalar offset1 = Scalar(3.14);
3483 2 Scalar offset2 = offset1 + Scalar(1.19841);
3484
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf(n, offset1);
3485
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane(n, offset2);
3486
3487
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3488
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3489
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3490 2 distance = offset2 - offset1;
3491 2 SET_LINE;
3492
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, false);
3493
3494
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3495
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3496
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3497 2 SET_LINE;
3498
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, false);
3499 2 }
3500
3501 {
3502
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().normalized();
3503 2 Scalar offset1 = Scalar(3.14);
3504 2 Scalar offset2 = offset1 - Scalar(1.19841);
3505
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf(n, offset1);
3506
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane(n, offset2);
3507
3508
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3509
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3510
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 normal = n;
3511 2 distance = offset2 - offset1;
3512 2 SET_LINE;
3513
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, &distance, &normal);
3514
3515
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3516
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3517
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3518 2 SET_LINE;
3519
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, &distance, &normal);
3520 2 }
3521
3522 {
3523
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n1(1, 0, 0);
3524 2 Scalar offset1 = Scalar(3.14);
3525
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf(n1, offset1);
3526
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n2(0, 0, 1);
3527 2 Scalar offset2 = Scalar(-2.13);
3528
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane(n2, offset2);
3529
3530
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3531
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3532
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 normal << 0, -1, 0;
3533 2 SET_LINE;
3534
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, NULL, &normal);
3535
3536
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3537
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3538
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3539 2 SET_LINE;
3540
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, NULL, &normal);
3541 2 }
3542
3543 {
3544
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n1(1, 0, 0);
3545 2 Scalar offset1 = Scalar(3.14);
3546
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Halfspace hf(n1, offset1);
3547
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Vec3s n2(1, 1, 1);
3548 2 Scalar offset2 = Scalar(-2.13);
3549
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Plane plane(n2, offset2);
3550
3551
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setIdentity();
3552
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2.setIdentity();
3553
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 normal << 0, Scalar(-0.5774), Scalar(0.5774);
3554 2 SET_LINE;
3555
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, NULL, &normal, false,
3556 Scalar(1e-3));
3557
3558
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1 = transform;
3559
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf2 = transform;
3560
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 normal = transform.getRotation() * normal;
3561 2 SET_LINE;
3562
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testShapeCollide(hf, tf1, plane, tf2, true, NULL, NULL, &normal, false,
3563 Scalar(1e-3));
3564 2 }
3565 2 }
3566
3567
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(GJKSolver_shapeDistance_spheresphere) {
3568
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s1(20);
3569
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s2(10);
3570
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 Vec3s closest_p1, closest_p2, normal;
3571 2 bool compute_penetration = true;
3572
3573
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3574
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3575
3576 2 Scalar dist = -1;
3577
3578
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3579
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(40, 0, 0)), compute_penetration,
3580 closest_p1, closest_p2, normal);
3581
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10) < 0.001);
3582
3583
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3584
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(Scalar(30.1), 0, 0)),
3585 compute_penetration, closest_p1, closest_p2, normal);
3586
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3587
3588
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3589
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(Scalar(29.9), 0, 0)),
3590 compute_penetration, closest_p1, closest_p2, normal);
3591
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3592
3593
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 dist = solver1.shapeDistance(s1, Transform3s(Vec3s(40, 0, 0)), s2,
3594
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Transform3s(), compute_penetration, closest_p1,
3595 closest_p2, normal);
3596
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10) < 0.001);
3597
3598
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 dist = solver1.shapeDistance(s1, Transform3s(Vec3s(Scalar(30.1), 0, 0)), s2,
3599
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Transform3s(), compute_penetration, closest_p1,
3600 closest_p2, normal);
3601
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3602
3603
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 dist = solver1.shapeDistance(s1, Transform3s(Vec3s(Scalar(29.9), 0, 0)), s2,
3604
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Transform3s(), compute_penetration, closest_p1,
3605 closest_p2, normal);
3606
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist < 0);
3607
3608
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3609
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(40, 0, 0)),
3610 compute_penetration, closest_p1, closest_p2, normal);
3611
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10) < 0.001);
3612
3613
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3614
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(30.1), 0, 0)),
3615 compute_penetration, closest_p1, closest_p2, normal);
3616
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3617
3618
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3619
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(29.9), 0, 0)),
3620 compute_penetration, closest_p1, closest_p2, normal);
3621
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist < 0);
3622
3623
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 dist = solver1.shapeDistance(s1, transform * Transform3s(Vec3s(40, 0, 0)), s2,
3624 transform, compute_penetration, closest_p1,
3625 closest_p2, normal);
3626
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10) < 0.001);
3627
3628
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3629
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.
4 s1, transform * Transform3s(Vec3s(Scalar(30.1), 0, 0)), s2, transform,
3630 compute_penetration, closest_p1, closest_p2, normal);
3631
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3632
3633
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3634
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.
4 s1, transform * Transform3s(Vec3s(Scalar(29.9), 0, 0)), s2, transform,
3635 compute_penetration, closest_p1, closest_p2, normal);
3636
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist < 0);
3637 2 }
3638
3639
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(GJKSolver_shapeDistance_boxbox) {
3640
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s1(20, 40, 50);
3641
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s2(10, 10, 10);
3642
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 Vec3s closest_p1, closest_p2, normal;
3643 2 bool compute_penetration = true;
3644
3645
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3646
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3647
3648 Scalar dist;
3649
3650
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3651 compute_penetration, closest_p1, closest_p2,
3652 normal);
3653
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3654
3655 dist =
3656
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3657 closest_p1, closest_p2, normal);
3658
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3659
3660
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3661
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), 0, 0)),
3662 compute_penetration, closest_p1, closest_p2, normal);
3663
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3664
3665
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3666
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(Scalar(20.1), 0, 0)),
3667 compute_penetration, closest_p1, closest_p2, normal);
3668
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10.1) < 0.001);
3669
3670
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3671
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(0, Scalar(20.2), 0)),
3672 compute_penetration, closest_p1, closest_p2, normal);
3673
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10.2) < 0.001);
3674
3675
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3676
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), Scalar(10.1), 0)),
3677 compute_penetration, closest_p1, closest_p2, normal);
3678
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1 * 1.414) < 0.001);
3679
3680
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver2.shapeDistance(
3681
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), 0, 0)),
3682 compute_penetration, closest_p1, closest_p2, normal);
3683
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3684
3685
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver2.shapeDistance(
3686
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(Scalar(20.1), 0, 0)),
3687 compute_penetration, closest_p1, closest_p2, normal);
3688
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10.1) < 0.001);
3689
3690
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver2.shapeDistance(
3691
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(0, Scalar(20.1), 0)),
3692 compute_penetration, closest_p1, closest_p2, normal);
3693
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 10.1) < 0.001);
3694
3695
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver2.shapeDistance(
3696
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.
4 s2, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), Scalar(10.1), 0)),
3697 compute_penetration, closest_p1, closest_p2, normal);
3698
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1 * 1.414) < 0.001);
3699
3700
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3701
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(15.1), 0, 0)),
3702 compute_penetration, closest_p1, closest_p2, normal);
3703
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3704
3705
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3706
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(20, 0, 0)), compute_penetration,
3707 closest_p1, closest_p2, normal);
3708
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 5) < 0.001);
3709
3710
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3711
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(20, 0, 0)),
3712 compute_penetration, closest_p1, closest_p2, normal);
3713
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 5) < 0.001);
3714 2 }
3715
3716
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(GJKSolver_shapeDistance_cylinderbox) {
3717
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s1(Scalar(0.029), Scalar(0.1));
3718
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s2(Scalar(1.6), Scalar(0.6), Scalar(0.025));
3719
3720 using Quat = Eigen::Quaternion<Scalar>;
3721 Transform3s tf1(
3722 Quat(Scalar(0.5279170511703305), Scalar(-0.50981118132505521),
3723
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Scalar(-0.67596178682051911), Scalar(0.0668715876735793)),
3724 Vec3s(Scalar(0.041218354748013122), Scalar(1.2022554710435607),
3725
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 Scalar(0.77338855025700015)));
3726
3727 Transform3s tf2(
3728
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Quat(Scalar(0.70738826916719977), 0, 0, Scalar(0.70682518110536596)),
3729 Vec3s(Scalar(-0.29936284351096382), Scalar(0.80023864435868775),
3730
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 Scalar(0.71750000000000003)));
3731
3732
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GJKSolver solver;
3733
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 Vec3s p1, p2, normal;
3734 2 bool compute_penetration = true;
3735
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver.shapeDistance(s1, tf1, s2, tf2, compute_penetration, p1, p2, normal);
3736 // If objects are not colliding, p2 should be outside the cylinder and
3737 // p1 should be outside the box
3738
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Vec3s p2Loc(tf1.inverse().transform(p2));
3739
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
2 bool p2_in_cylinder((fabs(p2Loc[2]) <= s1.halfLength) &&
3740 (p2Loc[0] * p2Loc[0] + p2Loc[1] * p2Loc[1] <= s1.radius));
3741
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Vec3s p1Loc(tf2.inverse().transform(p1));
3742
5/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 13 taken 1 times.
✗ Branch 14 not taken.
2 bool p1_in_box = (p1Loc.array().abs() <= s2.halfSide.array()).all();
3743
5/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 13 taken 1 times.
✗ Branch 14 not taken.
2 std::cout << "p2 in cylinder = (" << p2Loc.transpose() << ")" << std::endl;
3744
5/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 13 taken 1 times.
✗ Branch 14 not taken.
2 std::cout << "p1 in box = (" << p1Loc.transpose() << ")" << std::endl;
3745
3746
8/20
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK((!p2_in_cylinder && !p1_in_box) || (p2_in_cylinder && p1_in_box));
3747
3748
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver.shapeDistance(s2, tf2, s1, tf1, compute_penetration, p2, p1, normal);
3749 // If objects are not colliding, p2 should be outside the cylinder and
3750 // p1 should be outside the box
3751
3752
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 p2Loc = tf1.inverse().transform(p2);
3753
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
2 p2_in_cylinder = (fabs(p2Loc[2]) <= s1.halfLength) &&
3754 (p2Loc[0] * p2Loc[0] + p2Loc[1] * p2Loc[1] <= s1.radius);
3755
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 p1Loc = tf2.inverse().transform(p1);
3756
5/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 13 taken 1 times.
✗ Branch 14 not taken.
2 p1_in_box = (p1Loc.array().abs() <= s2.halfSide.array()).all();
3757
3758
5/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 13 taken 1 times.
✗ Branch 14 not taken.
2 std::cout << "p2 in cylinder = (" << p2Loc.transpose() << ")" << std::endl;
3759
5/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 13 taken 1 times.
✗ Branch 14 not taken.
2 std::cout << "p1 in box = (" << p1.transpose() << ")" << std::endl;
3760
3761
8/20
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK((!p2_in_cylinder && !p1_in_box) || (p2_in_cylinder && p1_in_box));
3762
3763
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 s1 = Cylinder(Scalar(0.06), Scalar(0.1));
3764
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setTranslation(Vec3s(Scalar(-0.66734052046473924),
3765 Scalar(0.22219183277457269),
3766
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Scalar(0.76825248755616293)));
3767 using Quat = Eigen::Quaternion<Scalar>;
3768
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 tf1.setQuatRotation(
3769 Quat(Scalar(0.52613359459338371), Scalar(0.32189408354839893),
3770
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Scalar(0.70415587451837913), Scalar(-0.35175580165512249)));
3771
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver.shapeDistance(s1, tf1, s2, tf2, compute_penetration, p1, p2, normal);
3772 2 }
3773
3774
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(GJKSolver_shapeDistance_boxsphere) {
3775
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere s1(20);
3776
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box s2(5, 5, 5);
3777
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 Vec3s closest_p1, closest_p2, normal;
3778 2 bool compute_penetration = true;
3779
3780
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3781
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3782
3783 Scalar dist;
3784
3785 2 int N = 10;
3786
2/2
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 1 times.
24 for (int i = 0; i < N + 1; ++i) {
3787
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
22 Scalar dbox = Scalar(0.0001) + (s1.radius + s2.halfSide(0)) * Scalar(i) *
3788 22 4 / (3 * Scalar(N));
3789
3/6
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
22 dist = solver1.shapeDistance(s1, Transform3s(Vec3s(dbox, 0., 0.)), s2,
3790
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
44 Transform3s(), compute_penetration, closest_p1,
3791 closest_p2, normal);
3792
7/14
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 11 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 11 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 11 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 11 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 11 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 11 times.
22 BOOST_CHECK_CLOSE(dist, (dbox - s1.radius - s2.halfSide(0)), Scalar(1e-6));
3793
20/40
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 11 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 11 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 11 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 11 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 11 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 11 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 11 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 11 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 11 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 11 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 11 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 11 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 11 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 11 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 11 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 11 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 11 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 11 times.
✗ Branch 59 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 11 times.
22 EIGEN_VECTOR_IS_APPROX(normal, -Vec3s(1, 0, 0), Scalar(1e-6));
3794
3795 22 dist =
3796
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
22 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3797 closest_p1, closest_p2, normal);
3798
1/2
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
22 dist = solver1.shapeDistance(
3799
3/6
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 11 times.
✗ Branch 8 not taken.
44 s1, transform * Transform3s(Vec3s(dbox, 0., 0.)), s2, transform,
3800 compute_penetration, closest_p1, closest_p2, normal);
3801
7/14
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 11 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 11 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 11 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 11 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 11 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 11 times.
22 BOOST_CHECK_CLOSE(dist, (dbox - s1.radius - s2.halfSide(0)), Scalar(1e-6));
3802
20/40
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 11 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 11 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 11 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 11 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 11 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 11 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 11 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 11 times.
✗ Branch 30 not taken.
✓ Branch 32 taken 11 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 11 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 11 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 11 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 11 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 11 times.
✗ Branch 49 not taken.
✓ Branch 51 taken 11 times.
✗ Branch 52 not taken.
✓ Branch 54 taken 11 times.
✗ Branch 55 not taken.
✓ Branch 57 taken 11 times.
✗ Branch 58 not taken.
✓ Branch 60 taken 11 times.
✗ Branch 61 not taken.
✗ Branch 71 not taken.
✓ Branch 72 taken 11 times.
22 EIGEN_VECTOR_IS_APPROX(normal, -transform.getRotation().col(0),
3803 Scalar(1e-6));
3804 }
3805
3806
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3807 compute_penetration, closest_p1, closest_p2,
3808 normal);
3809
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3810
3811 2 dist =
3812
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3813 closest_p1, closest_p2, normal);
3814
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3815
3816
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3817
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(Scalar(22.6), 0, 0)),
3818 compute_penetration, closest_p1, closest_p2, normal);
3819
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3820
3821
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3822
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(22.6), 0, 0)),
3823 compute_penetration, closest_p1, closest_p2, normal);
3824
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.01);
3825
3826
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3827
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(40, 0, 0)), compute_penetration,
3828 closest_p1, closest_p2, normal);
3829
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 17.5) < 0.001);
3830
3831
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3832
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(40, 0, 0)),
3833 compute_penetration, closest_p1, closest_p2, normal);
3834
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 17.5) < 0.001);
3835 2 }
3836
3837
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(GJKSolver_shapeDistance_cylindercylinder) {
3838
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s1(5, 10);
3839
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s2(5, 10);
3840
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 Vec3s closest_p1, closest_p2, normal;
3841 2 bool compute_penetration = true;
3842
3843
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3844
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3845
3846 Scalar dist;
3847
3848 {
3849 // The following situations corresponds to the case where the two cylinders
3850 // are exactly superposed. This is the worst case for EPA which will take
3851 // forever to converge with default parameters.
3852
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3853 compute_penetration, closest_p1, closest_p2,
3854 normal);
3855
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3856
3857 dist =
3858
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3859 closest_p1, closest_p2, normal);
3860
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3861
3862 // To handle the superposing case, we have to decrease the tolerance of EPA
3863 // and allow it to work with more vertices and faces.
3864 2 Scalar epa_tolerance_backup = solver1.epa_tolerance;
3865 2 size_t epa_max_iterations_backup = solver1.epa_max_iterations;
3866 2 solver1.epa_tolerance = Scalar(1e-2);
3867 2 solver1.epa_max_iterations = 1000;
3868
3869
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3870 compute_penetration, closest_p1, closest_p2,
3871 normal);
3872
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3873
3874 dist =
3875
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3876 closest_p1, closest_p2, normal);
3877
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3878
3879 // We restore the original values of the EPA parameters
3880 2 solver1.epa_tolerance = epa_tolerance_backup;
3881 2 solver1.epa_max_iterations = epa_max_iterations_backup;
3882 }
3883
3884
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3885
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), 0, 0)),
3886 compute_penetration, closest_p1, closest_p2, normal);
3887
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3888
3889
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3890
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(10.1), 0, 0)),
3891 compute_penetration, closest_p1, closest_p2, normal);
3892
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3893
3894
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3895
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(40, 0, 0)), compute_penetration,
3896 closest_p1, closest_p2, normal);
3897
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 30) < 0.001);
3898
3899
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3900
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(40, 0, 0)),
3901 compute_penetration, closest_p1, closest_p2, normal);
3902
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 30) < 0.001);
3903 2 }
3904
3905
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(GJKSolver_shapeDistance_conecone) {
3906
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s1(5, 10);
3907
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s2(5, 10);
3908
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 Vec3s closest_p1, closest_p2, normal;
3909 2 bool compute_penetration = true;
3910
3911
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3912
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3913
3914 Scalar dist;
3915
3916 {
3917 // The following situations corresponds to the case where the two cones
3918 // are exactly superposed. This is the worst case for EPA which will take
3919 // forever to converge with default parameters.
3920
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3921 compute_penetration, closest_p1, closest_p2,
3922 normal);
3923
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3924
3925 dist =
3926
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3927 closest_p1, closest_p2, normal);
3928
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3929
3930 // To handle the superposing case, we have to decrease the tolerance of EPA
3931 // and allow it to work with more vertices and faces.
3932 2 Scalar epa_tolerance_backup = solver1.epa_tolerance;
3933 2 size_t epa_max_iterations_backup = solver1.epa_max_iterations;
3934 2 solver1.epa_tolerance = Scalar(1e-2);
3935 2 solver1.epa_max_iterations = 1000;
3936
3937
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3938 compute_penetration, closest_p1, closest_p2,
3939 normal);
3940
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3941
3942 dist =
3943
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3944 closest_p1, closest_p2, normal);
3945
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3946
3947 // We restore the original values of the EPA parameters
3948 2 solver1.epa_tolerance = epa_tolerance_backup;
3949 2 solver1.epa_max_iterations = epa_max_iterations_backup;
3950 }
3951
3952
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3953
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), 0, 0)),
3954 compute_penetration, closest_p1, closest_p2, normal);
3955
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3956
3957
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3958
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(10.1), 0, 0)),
3959 compute_penetration, closest_p1, closest_p2, normal);
3960
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.001);
3961
3962
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3963
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(0, 0, 40)), compute_penetration,
3964 closest_p1, closest_p2, normal);
3965
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 30) < 1);
3966
3967
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
3968
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(0, 0, 40)),
3969 compute_penetration, closest_p1, closest_p2, normal);
3970
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 30) < 1);
3971 2 }
3972
3973
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(GJKSolver_shapeDistance_conecylinder) {
3974
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder s1(5, 10);
3975
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone s2(5, 10);
3976
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 Vec3s closest_p1, closest_p2, normal;
3977 2 bool compute_penetration = true;
3978
3979
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Transform3s transform;
3980
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 generateRandomTransform(extents, transform);
3981
3982 Scalar dist;
3983
3984 {
3985 // The following situations corresponds to the case where the two cones
3986 // are exactly superposed. This is the worst case for EPA which will take
3987 // forever to converge with default parameters.
3988
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
3989 compute_penetration, closest_p1, closest_p2,
3990 normal);
3991
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3992
3993 dist =
3994
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
3995 closest_p1, closest_p2, normal);
3996
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
3997
3998 // To handle the superposing case, we have to decrease the tolerance of EPA
3999 // and allow it to work with more vertices and faces.
4000 2 Scalar epa_tolerance_backup = solver1.epa_tolerance;
4001 2 size_t epa_max_iterations_backup = solver1.epa_max_iterations;
4002 2 solver1.epa_tolerance = Scalar(1e-2);
4003 2 solver1.epa_max_iterations = 1000;
4004
4005
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 dist = solver1.shapeDistance(s1, Transform3s(), s2, Transform3s(),
4006 compute_penetration, closest_p1, closest_p2,
4007 normal);
4008
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
4009
4010 dist =
4011
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 solver1.shapeDistance(s1, transform, s2, transform, compute_penetration,
4012 closest_p1, closest_p2, normal);
4013
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(dist <= 0);
4014
4015 // We restore the original values of the EPA parameters
4016 2 solver1.epa_tolerance = epa_tolerance_backup;
4017 2 solver1.epa_max_iterations = epa_max_iterations_backup;
4018 }
4019
4020
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
4021
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(Scalar(10.1), 0, 0)),
4022 compute_penetration, closest_p1, closest_p2, normal);
4023
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.01);
4024
4025
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
4026
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(Scalar(10.1), 0, 0)),
4027 compute_penetration, closest_p1, closest_p2, normal);
4028
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 0.1) < 0.02);
4029
4030
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
4031
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.
4 s1, Transform3s(), s2, Transform3s(Vec3s(40, 0, 0)), compute_penetration,
4032 closest_p1, closest_p2, normal);
4033
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 30) < 0.01);
4034
4035
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 dist = solver1.shapeDistance(
4036
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.
4 s1, transform, s2, transform * Transform3s(Vec3s(40, 0, 0)),
4037 compute_penetration, closest_p1, closest_p2, normal);
4038
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(fabs(dist - 30) < 0.1);
4039 2 }
4040
4041 template <typename S1, typename S2>
4042 1 void testReversibleShapeDistance(const S1& s1, const S2& s2, Scalar distance) {
4043 1 const Scalar half = Scalar(0.5);
4044
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 Transform3s tf1(Vec3s(-half * distance, 0.0, 0.0));
4045
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 Transform3s tf2(Vec3s(+half * distance, 0.0, 0.0));
4046
4047 Scalar distA;
4048 Scalar distB;
4049
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Vec3s p1A;
4050
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Vec3s p1B;
4051
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Vec3s p2A;
4052
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 Vec3s p2B;
4053
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
1 Vec3s normalA, normalB;
4054 1 bool compute_penetration = true;
4055
4056 1 const Scalar tol = Scalar(1e-6);
4057
4058
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 distA = solver1.shapeDistance(s1, tf1, s2, tf2, compute_penetration, p1A, p2A,
4059 normalA);
4060
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 distB = solver1.shapeDistance(s2, tf2, s1, tf1, compute_penetration, p1B, p2B,
4061 normalB);
4062
4063
3/8
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 assert((distA <= 0 && distB <= 0) || (distA > 0 && distB > 0));
4064
6/12
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
1 BOOST_CHECK_CLOSE(distA, distB, tol); // distances should be same
4065
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
1 BOOST_CHECK(
4066 isEqual(p1A, p2B, tol)); // closest points should in reverse order
4067
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
1 BOOST_CHECK(isEqual(p2A, p1B, tol));
4068
4069
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 distA = solver2.shapeDistance(s1, tf1, s2, tf2, compute_penetration, p1A, p2A,
4070 normalA);
4071
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 distB = solver2.shapeDistance(s2, tf2, s1, tf1, compute_penetration, p1B, p2B,
4072 normalB);
4073
4074
3/8
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
1 assert((distA <= 0 && distB <= 0) || (distA > 0 && distB > 0));
4075
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
1 BOOST_CHECK(solver1.gjk.status == solver2.gjk.status);
4076
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
1 BOOST_CHECK(solver1.epa.status == solver2.epa.status);
4077
6/12
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
1 BOOST_CHECK_CLOSE(distA, distB, tol);
4078
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
1 BOOST_CHECK(isEqual(p1A, p2B, tol));
4079
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
1 BOOST_CHECK(isEqual(p2A, p1B, tol));
4080 1 }
4081
4082
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(reversibleShapeDistance_allshapes) {
4083 // This test check whether a shape distance algorithm is called for the
4084 // reverse case as well. For example, if FCL has sphere-capsule distance
4085 // algorithm, then this algorithm should be called for capsule-sphere case.
4086
4087 // Prepare all kinds of primitive shapes (7) -- box, sphere, capsule, cone,
4088 // cylinder, plane, halfspace
4089
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Box box(10, 10, 10);
4090
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Sphere sphere(5);
4091
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Capsule capsule(5, 10);
4092
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cone cone(5, 10);
4093
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Cylinder cylinder(5, 10);
4094
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Plane plane(Vec3s(0, 0, 0), 0.0);
4095
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Halfspace halfspace(Vec3s(0, 0, 0), 0.0);
4096
4097 // Use sufficiently long distance so that all the primitive shapes CANNOT
4098 // intersect
4099 2 Scalar distance = 15.0;
4100
4101 // If new shape distance algorithm is added for two distinct primitive
4102 // shapes, uncomment associated lines. For example, box-sphere intersection
4103 // algorithm is added, then uncomment box-sphere.
4104
4105 // testReversibleShapeDistance(box, sphere, distance);
4106 // testReversibleShapeDistance(box, capsule, distance);
4107 // testReversibleShapeDistance(box, cone, distance);
4108 // testReversibleShapeDistance(box, cylinder, distance);
4109 // testReversibleShapeDistance(box, plane, distance);
4110 // testReversibleShapeDistance(box, halfspace, distance);
4111
4112 2 SET_LINE;
4113
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 testReversibleShapeDistance(sphere, capsule, distance);
4114 // testReversibleShapeDistance(sphere, cone, distance);
4115 // testReversibleShapeDistance(sphere, cylinder, distance);
4116 // testReversibleShapeDistance(sphere, plane, distance);
4117 // testReversibleShapeDistance(sphere, halfspace, distance);
4118
4119 // testReversibleShapeDistance(capsule, cone, distance);
4120 // testReversibleShapeDistance(capsule, cylinder, distance);
4121 // testReversibleShapeDistance(capsule, plane, distance);
4122 // testReversibleShapeDistance(capsule, halfspace, distance);
4123
4124 // testReversibleShapeDistance(cone, cylinder, distance);
4125 // testReversibleShapeDistance(cone, plane, distance);
4126 // testReversibleShapeDistance(cone, halfspace, distance);
4127
4128 // testReversibleShapeDistance(cylinder, plane, distance);
4129 // testReversibleShapeDistance(cylinder, halfspace, distance);
4130
4131 // testReversibleShapeDistance(plane, halfspace, distance);
4132 2 }
4133