summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-09-11 11:55:55 +0200
committerROUVREAU Vincent <vincent.rouvreau@inria.fr>2020-09-11 11:55:55 +0200
commit171ddab9b7a50f0303d7201fa547dbfb445f9698 (patch)
treee8464dd61a45c9c6a84b929e3eb00692f186d6b2
parent9922407fe6f5d8872522157555c3573e95930ac3 (diff)
Requires CGAL >= 5.1. Fix is_gabriel computation
-rw-r--r--src/Alpha_complex/example/CMakeLists.txt14
-rw-r--r--src/Alpha_complex/example/Weighted_alpha_complex_from_points.cpp14
-rw-r--r--src/Alpha_complex/include/gudhi/Alpha_complex.h8
-rw-r--r--src/Alpha_complex/include/gudhi/Alpha_complex/Alpha_kernel_d.h17
-rw-r--r--src/Alpha_complex/test/CMakeLists.txt13
5 files changed, 35 insertions, 31 deletions
diff --git a/src/Alpha_complex/example/CMakeLists.txt b/src/Alpha_complex/example/CMakeLists.txt
index 17dc896c..1fc2330a 100644
--- a/src/Alpha_complex/example/CMakeLists.txt
+++ b/src/Alpha_complex/example/CMakeLists.txt
@@ -7,13 +7,10 @@ if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.11.0)
target_link_libraries(Alpha_complex_example_from_off ${CGAL_LIBRARY})
add_executable ( Alpha_complex_example_fast_from_off Fast_alpha_complex_from_off.cpp )
target_link_libraries(Alpha_complex_example_fast_from_off ${CGAL_LIBRARY})
- add_executable ( Weighted_alpha_complex_example_from_points Weighted_alpha_complex_from_points.cpp )
- target_link_libraries(Weighted_alpha_complex_example_from_points ${CGAL_LIBRARY})
if (TBB_FOUND)
target_link_libraries(Alpha_complex_example_from_points ${TBB_LIBRARIES})
target_link_libraries(Alpha_complex_example_from_off ${TBB_LIBRARIES})
target_link_libraries(Alpha_complex_example_fast_from_off ${TBB_LIBRARIES})
- target_link_libraries(Weighted_alpha_complex_example_from_points ${TBB_LIBRARIES})
endif()
add_test(NAME Alpha_complex_example_from_points COMMAND $<TARGET_FILE:Alpha_complex_example_from_points>)
@@ -28,8 +25,6 @@ if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.11.0)
add_test(NAME Alpha_complex_example_fast_from_off_32 COMMAND $<TARGET_FILE:Alpha_complex_example_fast_from_off>
"${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" "32.0" "${CMAKE_CURRENT_BINARY_DIR}/fastalphaoffreader_result_32.txt")
- add_test(NAME Weighted_alpha_complex_example_from_points COMMAND $<TARGET_FILE:Weighted_alpha_complex_example_from_points>)
-
if (DIFF_PATH)
# Do not forget to copy test results files in current binary dir
file(COPY "alphaoffreader_for_doc_32.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
@@ -69,3 +64,12 @@ if (NOT CGAL_VERSION VERSION_LESS 4.11.0)
COMMAND $<TARGET_FILE:Alpha_complex_example_3d_from_points>)
endif(NOT CGAL_VERSION VERSION_LESS 4.11.0)
+
+if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 5.1.0)
+ add_executable ( Weighted_alpha_complex_example_from_points Weighted_alpha_complex_from_points.cpp )
+ target_link_libraries(Weighted_alpha_complex_example_from_points ${CGAL_LIBRARY})
+ if (TBB_FOUND)
+ target_link_libraries(Weighted_alpha_complex_example_from_points ${TBB_LIBRARIES})
+ endif()
+ add_test(NAME Weighted_alpha_complex_example_from_points COMMAND $<TARGET_FILE:Weighted_alpha_complex_example_from_points>)
+endif(NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 5.1.0)
diff --git a/src/Alpha_complex/example/Weighted_alpha_complex_from_points.cpp b/src/Alpha_complex/example/Weighted_alpha_complex_from_points.cpp
index 05858084..19a04282 100644
--- a/src/Alpha_complex/example/Weighted_alpha_complex_from_points.cpp
+++ b/src/Alpha_complex/example/Weighted_alpha_complex_from_points.cpp
@@ -18,13 +18,13 @@ int main() {
// Init of a list of points
// ----------------------------------------------------------------------------
Vector_of_points points;
- points.push_back(Weighted_point(Bare_point(1.0, 1.0) , 0.));
- points.push_back(Weighted_point(Bare_point(7.0, 0.0) , 0.));
- points.push_back(Weighted_point(Bare_point(4.0, 6.0) , 0.));
- points.push_back(Weighted_point(Bare_point(9.0, 6.0) , 0.));
- points.push_back(Weighted_point(Bare_point(0.0, 14.0), 0.));
- points.push_back(Weighted_point(Bare_point(2.0, 19.0), 0.));
- points.push_back(Weighted_point(Bare_point(9.0, 17.0), 0.));
+ points.push_back(Weighted_point(Bare_point(1.0, 1.0) , 1.));
+ points.push_back(Weighted_point(Bare_point(7.0, 0.0) , 1.));
+ points.push_back(Weighted_point(Bare_point(4.0, 6.0) , 1.));
+ points.push_back(Weighted_point(Bare_point(9.0, 6.0) , 1.));
+ points.push_back(Weighted_point(Bare_point(0.0, 14.0), 1.));
+ points.push_back(Weighted_point(Bare_point(2.0, 19.0), 1.));
+ points.push_back(Weighted_point(Bare_point(9.0, 17.0), 1.));
// ----------------------------------------------------------------------------
// Init of an alpha complex from the list of points
diff --git a/src/Alpha_complex/include/gudhi/Alpha_complex.h b/src/Alpha_complex/include/gudhi/Alpha_complex.h
index 8e9fe773..4316d9bc 100644
--- a/src/Alpha_complex/include/gudhi/Alpha_complex.h
+++ b/src/Alpha_complex/include/gudhi/Alpha_complex.h
@@ -210,6 +210,11 @@ class Alpha_complex {
<< std::endl;
#endif
+#if CGAL_VERSION_NR < 1050101000
+ // Make compilation fail if weighted and CGAL < 5.1
+ static_assert(!Weighted, "Weighted Alpha_complex is only available for CGAL >= 5.1");
+#endif
+
auto first = std::begin(points);
auto last = std::end(points);
@@ -457,8 +462,7 @@ class Alpha_complex {
while(shortiter != enditer && *longiter == *shortiter) { ++longiter; ++shortiter; }
Vertex_handle extra = *longiter;
auto const& cache=get_cache(complex, f_boundary);
- bool is_gab = kernel_.get_squared_distance(kernel_.get_circumcenter(cache), get_point_(extra)) >=
- kernel_.get_squared_radius(cache);
+ bool is_gab = kernel_.is_gabriel(cache, get_point_(extra));
#ifdef DEBUG_TRACES
std::clog << " | Tau is_gabriel(Sigma)=" << is_gab << " - vertexForGabriel=" << extra << std::endl;
#endif // DEBUG_TRACES
diff --git a/src/Alpha_complex/include/gudhi/Alpha_complex/Alpha_kernel_d.h b/src/Alpha_complex/include/gudhi/Alpha_complex/Alpha_kernel_d.h
index a3e3845a..b64e4f59 100644
--- a/src/Alpha_complex/include/gudhi/Alpha_complex/Alpha_kernel_d.h
+++ b/src/Alpha_complex/include/gudhi/Alpha_complex/Alpha_kernel_d.h
@@ -71,13 +71,8 @@ class Alpha_kernel_d<Kernel, false> {
return sph.second;
}
- auto get_circumcenter(const Sphere& sph) const {
- return sph.first;
- }
-
- template<class Point>
- FT get_squared_distance(const Point& first, const Point& second) const {
- return kernel_.squared_distance_d_object()(first, second);
+ bool is_gabriel(const Sphere& circumcenter, const Point_d& point) {
+ return kernel_.squared_distance_d_object()(circumcenter.first, point) >= circumcenter.second;
}
};
@@ -116,12 +111,8 @@ class Alpha_kernel_d<Kernel, true> {
return sph.weight();
}
- auto get_circumcenter(const Sphere& sph) const {
- return sph;
- }
-
- FT get_squared_distance(const Weighted_point_d& first, const Weighted_point_d& second) const {
- return kernel_.power_distance_d_object()(first, second);
+ bool is_gabriel(const Sphere& circumcenter, const Weighted_point_d& point) {
+ return kernel_.power_distance_d_object()(circumcenter, point) >= 0;
}
};
diff --git a/src/Alpha_complex/test/CMakeLists.txt b/src/Alpha_complex/test/CMakeLists.txt
index 71e4ea7c..837d2948 100644
--- a/src/Alpha_complex/test/CMakeLists.txt
+++ b/src/Alpha_complex/test/CMakeLists.txt
@@ -10,17 +10,13 @@ if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.11.0)
target_link_libraries(Alpha_complex_test_unit ${CGAL_LIBRARY})
add_executable ( Delaunay_complex_test_unit Delaunay_complex_unit_test.cpp )
target_link_libraries(Delaunay_complex_test_unit ${CGAL_LIBRARY})
- add_executable ( Alpha_kernel_d_test_unit Alpha_kernel_d_unit_test.cpp )
- target_link_libraries(Alpha_kernel_d_test_unit ${CGAL_LIBRARY})
if (TBB_FOUND)
target_link_libraries(Alpha_complex_test_unit ${TBB_LIBRARIES})
target_link_libraries(Delaunay_complex_test_unit ${TBB_LIBRARIES})
- target_link_libraries(Alpha_kernel_d_test_unit ${TBB_LIBRARIES})
endif()
gudhi_add_boost_test(Alpha_complex_test_unit)
gudhi_add_boost_test(Delaunay_complex_test_unit)
- gudhi_add_boost_test(Alpha_kernel_d_test_unit)
endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.11.0)
@@ -47,3 +43,12 @@ if (NOT CGAL_VERSION VERSION_LESS 4.11.0)
gudhi_add_boost_test(Weighted_periodic_alpha_complex_3d_test_unit)
endif (NOT CGAL_VERSION VERSION_LESS 4.11.0)
+
+if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 5.1.0)
+ add_executable ( Alpha_kernel_d_test_unit Alpha_kernel_d_unit_test.cpp )
+ target_link_libraries(Alpha_kernel_d_test_unit ${CGAL_LIBRARY})
+ if (TBB_FOUND)
+ target_link_libraries(Alpha_kernel_d_test_unit ${TBB_LIBRARIES})
+ endif()
+ gudhi_add_boost_test(Alpha_kernel_d_test_unit)
+endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 5.1.0) \ No newline at end of file