epeck support, fixed bug with infinity value

This commit is contained in:
Dmitry Anisimov 2021-04-09 16:03:55 +02:00
parent dc9e958503
commit 63db510aef
3 changed files with 20 additions and 14 deletions

View File

@ -17,7 +17,7 @@ using SCK = CGAL::Simple_cartesian<double>;
using EPICK = CGAL::Exact_predicates_inexact_constructions_kernel;
using EPECK = CGAL::Exact_predicates_exact_constructions_kernel;
using Kernel = EPECK;
using Kernel = EPICK;
using FT = typename Kernel::FT;
using Point_3 = typename Kernel::Point_3;
using Vector_3 = typename Kernel::Vector_3;
@ -682,7 +682,7 @@ int main(int argc, char** argv) {
// test_one_versus_another(apprx_hd, naive_hd);
// test_one_versus_another(naive_hd, bound_hd);
// test_one_versus_another(bound_hd, apprx_hd);
test_one_versus_another(bound_hd, apprx_hd);
// --- Compare on real meshes.
@ -691,14 +691,14 @@ int main(int argc, char** argv) {
// test_real_meshes(filepath1, filepath2, apprx_hd, naive_hd);
// test_real_meshes(filepath1, filepath2, naive_hd, bound_hd);
// test_real_meshes(filepath1, filepath2, bound_hd, apprx_hd);
test_real_meshes(filepath1, filepath2, bound_hd, apprx_hd);
// --- Compare timings.
filepath = (argc > 1 ? argv[1] : "data/blobby-remeshed.off");
// test_timings(filepath, apprx_hd);
// test_timings(filepath, naive_hd);
// test_timings(filepath, bound_hd);
test_timings(filepath, bound_hd);
// ------------------------------------------------------------------------ //
std::cout << std::endl;

View File

@ -1477,10 +1477,10 @@ double bounded_error_Hausdorff_impl(
tm2_tree.traits(), tm2, vpm2,
triangle_bounds.first,
triangle_bounds.second,
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity()
infinity_value<FT>(),
infinity_value<FT>(),
infinity_value<FT>(),
infinity_value<FT>()
);
tm2_tree.traversal_with_priority(sub_triangles[i], traversal_traits_tm2);

View File

@ -23,6 +23,12 @@
namespace CGAL {
// Infinity.
template<typename FT>
static FT infinity_value() {
return FT(1000000000000);
}
/**
* @struct Candidate_triangle
*/
@ -275,12 +281,12 @@ namespace CGAL {
Hausdorff_primitive_traits_tm2<Tree_traits, Triangle_3, Kernel, TriangleMesh, VPM2>
traversal_traits_tm2(
m_tm2_tree.traits(), m_tm2, m_vpm2,
(h_upper == FT(0)) ? std::numeric_limits<FT>::infinity() : h_upper, // Only pass current global bounds if they have been established yet
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity(),
std::numeric_limits<FT>::infinity()
(h_upper == FT(0)) ? infinity_value<FT>() : h_upper, // Only pass current global bounds if they have been established yet
infinity_value<FT>(),
infinity_value<FT>(),
infinity_value<FT>(),
infinity_value<FT>(),
infinity_value<FT>()
);
m_tm2_tree.traversal_with_priority(candidate_triangle, traversal_traits_tm2);