MCPcopy Create free account
hub / github.com/Geode-solutions/OpenGeode / test_intersections_with_query_box

Function test_intersections_with_query_box

tests/geometry/test-aabb.cpp:215–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

213
214template < geode::index_t dimension >
215void test_intersections_with_query_box()
216{
217 geode::Logger::info(
218 "TEST", " Box-Box intersection AABB ", dimension, "D " );
219 const geode::index_t nb_boxes{ 10 };
220 const double box_size{ 0.5 };
221 const auto box_vector =
222 create_box_vector< dimension >( nb_boxes, box_size );
223 geode::AABBTree< dimension > aabb{ box_vector };
224 BoxAABBIntersection< dimension > eval_intersection{ box_vector };
225 for( const auto i : geode::Range{ nb_boxes - 1 } )
226 {
227 for( const auto j : geode::Range{ nb_boxes - 1 } )
228 {
229 geode::Point< dimension > query;
230 // query boxes will be at internal corner grid
231 query.set_value( 0, i + box_size );
232 query.set_value( 1, j + box_size );
233 const auto box_query = create_bounding_box( query, box_size );
234
235 eval_intersection.box_intersections_.clear();
236 aabb.compute_bbox_element_bbox_intersections(
237 box_query, eval_intersection );
238
239 geode::OpenGeodeGeometryException::test(
240 eval_intersection.box_intersections_.size() == 4,
241 " Box-Box intersection - Wrong number of intersected "
242 "boxes" );
243
244 absl::flat_hash_set< geode::index_t > expected_set;
245 expected_set.emplace( global_box_index( i, j, nb_boxes ) );
246 expected_set.emplace( global_box_index( i, j + 1, nb_boxes ) );
247 expected_set.emplace( global_box_index( i + 1, j, nb_boxes ) );
248 expected_set.emplace( global_box_index( i + 1, j + 1, nb_boxes ) );
249 geode::OpenGeodeGeometryException::test(
250 eval_intersection.box_intersections_ == expected_set,
251 "Box-Box intersection - Wrong set of boxes" );
252 }
253 }
254 geode::Point< dimension > query;
255 // query box will be at top right corner grid
256 query.set_value( 0, nb_boxes - 1 + box_size );
257 query.set_value( 1, nb_boxes - 1 + box_size );
258 const auto box_query = create_bounding_box( query, box_size );
259
260 eval_intersection.box_intersections_.clear();
261 aabb.compute_bbox_element_bbox_intersections(
262 box_query, eval_intersection );
263
264 geode::OpenGeodeGeometryException::test(
265 eval_intersection.box_intersections_.size() == 1,
266 "Box-Box intersection - Wrong number of intersected boxes" );
267
268 absl::flat_hash_set< geode::index_t > expected_set;
269 expected_set.emplace(
270 global_box_index( nb_boxes - 1, nb_boxes - 1, nb_boxes ) );
271 geode::OpenGeodeGeometryException::test(
272 eval_intersection.box_intersections_ == expected_set,

Callers

nothing calls this directly

Calls 9

infoFunction · 0.85
create_bounding_boxFunction · 0.85
global_box_indexFunction · 0.85
emplaceMethod · 0.80
testFunction · 0.70
set_valueMethod · 0.45
clearMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected