diff --git a/AABB_tree/include/CGAL/AABB_traits.h b/AABB_tree/include/CGAL/AABB_traits.h index 7b4d6d9f25f..f098a934259 100644 --- a/AABB_tree/include/CGAL/AABB_traits.h +++ b/AABB_tree/include/CGAL/AABB_traits.h @@ -53,7 +53,7 @@ public: typedef typename GeomTraits::Point_3::Point Point; #endif - typedef typename std::pair Point_and_primitive; + typedef typename std::pair Point_and_primitive; // types for search tree // TOFIX: how can we avoid repeating those? diff --git a/AABB_tree/include/CGAL/AABB_tree.h b/AABB_tree/include/CGAL/AABB_tree.h index 8f9f4fc1489..f2917ff9caa 100644 --- a/AABB_tree/include/CGAL/AABB_tree.h +++ b/AABB_tree/include/CGAL/AABB_tree.h @@ -104,7 +104,7 @@ namespace CGAL { template bool any_intersection(const Query& q, - Intersection& intersection) const; + Point_and_primitive& intersection) const; template bool any_intersected_primitive(const Query& q, @@ -113,22 +113,25 @@ namespace CGAL { // distance queries FT squared_distance(const Point& q, const Point& hint) const; FT squared_distance(const Point& q) const; - Point closest_point(const Point& q, const Point& hint) const; - Point closest_point(const Point& q) const; + Point closest_point(const Point& q, const Point& hint); + Point closest_point(const Point& q); Primitive closest_primitive(const Point& q, const Point& hint) const; Primitive closest_primitive(const Point& q) const; Point_and_primitive closest_point_and_primitive(const Point& q, const Point& hint) const; Point_and_primitive closest_point_and_primitive(const Point& q) const; Bounding_box root_bbox() const { return m_p_root->bounding_box(); } - bool is_empty() const { return m_data.empty(); } + bool empty() const { return m_data.empty(); } size_t size() const { return m_data.size(); } /// generic traversal of tree template void traversal(const Query& q, Traversal_traits& traits) const { - m_p_root->template traversal(q, traits, m_data.size()); + if(!empty()) + m_p_root->template traversal(q, traits, m_data.size()); + else + std::cerr << "AABB tree traversal with empty tree" << std::endl; } ////////////////////////////////////////////// @@ -197,7 +200,7 @@ namespace CGAL { return AABBTraits().do_intersect(q, node.bounding_box()); } - int intersection_number() const { return m_nb_intersections; } + int number_of_intersections() const { return m_nb_intersections; } private: Point_and_primitive m_intersection; @@ -232,8 +235,8 @@ namespace CGAL { } private: - Intersection m_intersection; Output_iterator m_out_it; + Point_and_primitive m_intersection; }; @@ -284,7 +287,7 @@ namespace CGAL { { // TOFIX: update m_closest_primitive m_closest_point = AABBTraits().nearest_point(query, primitive, m_closest_point); - m_sphere = AABBTraits().sphere(q, m_closest_point); + m_sphere = AABBTraits().sphere(query, m_closest_point); } bool do_intersect(const Point& q, const Node& node) const @@ -422,7 +425,7 @@ namespace CGAL { Traversal_traits traversal_traits; this->traversal(query, traversal_traits); - return traversal_traits.intersection_number(); + return traversal_traits.number_of_intersections(); } @@ -492,18 +495,18 @@ namespace CGAL { template typename AABB_tree::Point AABB_tree::closest_point(const Point& query, - const Point& hint) const + const Point& hint) { - Distance_traits traversal_traits(query,hint); - this->traversal(query, traversal_traits); - return traversal_traits.projection(); + Distance_traits distance_traits(query,hint); + this->traversal(query, distance_traits); + return distance_traits.closest_point(); } // closest point without hint, the search KD-tree is queried for the // first nearest neighbor point to get a hint template typename AABB_tree::Point - AABB_tree::closest_point(const Point& query) const + AABB_tree::closest_point(const Point& query) { // construct search KD-tree if needed Point hint; diff --git a/AABB_tree/test/AABB_tree/aabb_intersection_triangle_test.cpp b/AABB_tree/test/AABB_tree/aabb_intersection_triangle_test.cpp index c091afaf66a..c4e4ebada5e 100644 --- a/AABB_tree/test/AABB_tree/aabb_intersection_triangle_test.cpp +++ b/AABB_tree/test/AABB_tree/aabb_intersection_triangle_test.cpp @@ -51,7 +51,7 @@ void test_all_query_types(Tree& tree) typedef typename K::Vector_3 Vector; typedef typename K::Segment_3 Segment; typedef typename Tree::Primitive Primitive; - typedef typename Tree::Intersection Intersection; + typedef typename Tree::Point_and_primitive Point_and_primitive; Point p((FT)-0.5, (FT)-0.5, (FT)-0.5); Point q((FT) 0.5, (FT) 0.5, (FT) 0.5); @@ -77,13 +77,13 @@ void test_all_query_types(Tree& tree) tree.all_intersected_primitives(segment,std::back_inserter(primitives)); // any_intersection - Intersection intersection; + Point_and_primitive intersection; success = tree.any_intersection(ray,intersection); success = tree.any_intersection(line,intersection); success = tree.any_intersection(segment,intersection); // all_intersections - std::list intersections; + std::list intersections; tree.all_intersections(ray,std::back_inserter(intersections)); tree.all_intersections(line,std::back_inserter(intersections)); tree.all_intersections(segment,std::back_inserter(intersections));