From bc24d14bb2c296dfaeed208025d8b9fe3ebd1a5e Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Thu, 21 Mar 2024 14:45:07 +0100 Subject: [PATCH] splitting example into declaration and test function --- .../AABB_polyline_segment_2_example.cpp | 54 ++++++++----------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/AABB_tree/examples/AABB_tree/AABB_polyline_segment_2_example.cpp b/AABB_tree/examples/AABB_tree/AABB_polyline_segment_2_example.cpp index ec65b84f810..52ac14b1153 100644 --- a/AABB_tree/examples/AABB_tree/AABB_polyline_segment_2_example.cpp +++ b/AABB_tree/examples/AABB_tree/AABB_polyline_segment_2_example.cpp @@ -27,6 +27,26 @@ typedef CGAL::AABB_traits_2 Traits_poly; typedef CGAL::AABB_tree Tree_poly; typedef Tree_poly::Point_and_primitive_id Point_and_primitive_id_poly; +template +void test(AABBTree& tree) { + tree.build(); + + tree.accelerate_distance_queries(); + + // counts #intersections with a segment query + Segment segment_query(Point(1.0, 0.0), Point(0.0, 7.0)); + + std::cout << tree.number_of_intersected_primitives(segment_query) + << " intersections(s) with segment" << std::endl; + + // computes the closest point from a point query + Point point_query(1.5, 3.0); + Point closest = tree.closest_point(point_query); + std::cerr << "closest point is: " << closest << std::endl; + + PPId id = tree.closest_point_and_primitive(point_query); +} + int main() { @@ -40,41 +60,11 @@ int main() Polygon poly(polyline.begin(), polyline.end()); - // constructs the AABB tree and the internal search tree for - // efficient distance computations. + test(Tree_poly(poly.begin(), poly.end(), poly)); // For a point range, the second iterator must be of the second-last point in the range. // If it points to the end of the range, to polyline is considered to be closed. - Tree_pr tree_pr(polyline.begin(), std::prev(polyline.end()), polyline); - Tree_poly tree_poly(poly.begin(), poly.end(), poly); + test(Tree_pr(polyline.begin(), std::prev(polyline.end()), polyline)); - tree_pr.build(); - tree_poly.build(); - - tree_pr.accelerate_distance_queries(); - tree_poly.accelerate_distance_queries(); - - // counts #intersections with a segment query - Segment segment_query(Point(1.0, 0.0), Point(0.0, 7.0)); - - std::cout << tree_pr.number_of_intersected_primitives(segment_query) - << " intersections(s) with segment" << std::endl; - - std::cout << tree_poly.number_of_intersected_primitives(segment_query) - << " intersections(s) with segment" << std::endl; - - // computes the closest point from a point query - Point point_query(1.5, 3.0); - Point closest = tree_pr.closest_point(point_query); - std::cerr << "closest point is: " << closest << std::endl; - - closest = tree_poly.closest_point(point_query); - std::cerr << "closest point is: " << closest << std::endl; - - Point_and_primitive_id_poly id_poly = tree_poly.closest_point_and_primitive(point_query); - // id_poly.second is of type Iterator_poly and points to the first point of the segment in the polygon point range. - - Point_and_primitive_id_pr id_pr = tree_pr.closest_point_and_primitive(point_query); - // id_pr.second is of type std::vector::iterator and points to the first point of the segment in the point range. return EXIT_SUCCESS; }