| 213 | |
| 214 | template < geode::index_t dimension > |
| 215 | void 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, |
nothing calls this directly
no test coverage detected