diff --git a/Distance_3/benchmark/Distance_3/bench_thingi10k_3.cpp b/Distance_3/benchmark/Distance_3/bench_thingi10k_3.cpp index d51b047226c..ad1ad41dab7 100644 --- a/Distance_3/benchmark/Distance_3/bench_thingi10k_3.cpp +++ b/Distance_3/benchmark/Distance_3/bench_thingi10k_3.cpp @@ -16,6 +16,20 @@ #include #include +template +class Old_compare_squared_distance_3 +{ + typedef typename K::FT FT; +public: + typedef typename K::Comparison_result result_type; + + template + CGAL::Needs_FT + operator()(const T1& p, const T2& q, const FT& d2) const + { + return CGAL::compare(CGAL::internal::squared_distance(p, q, K()), d2); + } +}; template struct Test @@ -41,6 +55,7 @@ struct Test public: Test() : nb_closed_pairs(0){ } + template void close_triangles(std::vector

&points, std::vector >& triangles, FT d2){ std::vector< CBox > boxes; auto extend_bbox3=[&](const Iterator it, FT& d2){ @@ -60,9 +75,14 @@ public: if(v.size()!=0) //they have common vertices return; - bool comp = K().compare_squared_distance_3_object()(T(points[a[0]], points[a[1]], points[a[2]]), - T(points[b[0]], points[b[1]], points[b[2]]), - d2)!=CGAL::LARGER; + bool comp; + T tr1(points[a[0]], points[a[1]], points[a[2]]); + T tr2(points[b[0]], points[b[1]], points[b[2]]); + if constexpr(optimized_version) + comp = K().compare_squared_distance_3_object()(tr1, tr2, d2)!=CGAL::LARGER; + else + comp = Old_compare_squared_distance_3()(tr1, tr2, d2)!=CGAL::LARGER; + if(comp) { nb_closed_pairs++; @@ -88,9 +108,15 @@ public: } CGAL::Real_timer t; t.start(); - close_triangles(input_points, input_triangles, d2); + close_triangles(input_points, input_triangles, d2); t.stop(); - std::cout << "#points = " << input_points.size() << " and #triangles = " << input_triangles.size() << " has " << nb_closed_pairs << " pairs at squared distance " << d2 << " in " << t.time() << " sec." << std::endl; + std::cout << "New version: #points = " << input_points.size() << " and #triangles = " << input_triangles.size() << " has " << nb_closed_pairs << " pairs at squared distance " << d2 << " in " << t.time() << " sec." << std::endl; + nb_closed_pairs=0; + t.reset(); + t.start(); + close_triangles(input_points, input_triangles, d2); + t.stop(); + std::cout << "Old version: #points = " << input_points.size() << " and #triangles = " << input_triangles.size() << " has " << nb_closed_pairs << " pairs at squared distance " << d2 << " in " << t.time() << " sec." << std::endl; } }; @@ -139,9 +165,11 @@ int main(int argc, char** argv) average_length/=(3*input_triangles.size()); // Test().run(filename, 100*max/input_points.size()); + std::cout << "EPICK" << std::endl; Test().run(filename, average_length*average_length/256); Test().run(filename, min_sq_length*4); + std::cout << "EPECK" << std::endl; Test().run(filename, average_length*average_length/256); Test().run(filename, min_sq_length*4); diff --git a/Distance_3/include/CGAL/Distance_3/Triangle_3_Triangle_3.h b/Distance_3/include/CGAL/Distance_3/Triangle_3_Triangle_3.h index 6584e669f34..876e0c955ec 100644 --- a/Distance_3/include/CGAL/Distance_3/Triangle_3_Triangle_3.h +++ b/Distance_3/include/CGAL/Distance_3/Triangle_3_Triangle_3.h @@ -229,7 +229,7 @@ compare_squared_distance_disjoint(const typename K::Triangle_3& tr1, typename K::Comparison_result res(LARGER); // The tiangle are supposed to be disjoint - assertion(!do_intersect(tr1, tr2)); + assert(!do_intersect(tr1, tr2)); for(int i=0; i<3; ++i) { diff --git a/HalfedgeDS/include/CGAL/boost/graph/properties_HalfedgeDS_base.h b/HalfedgeDS/include/CGAL/boost/graph/properties_HalfedgeDS_base.h index 3863b149e4f..65eedd6652c 100644 --- a/HalfedgeDS/include/CGAL/boost/graph/properties_HalfedgeDS_base.h +++ b/HalfedgeDS/include/CGAL/boost/graph/properties_HalfedgeDS_base.h @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include namespace CGAL {