From 8d7329f3e5ad843e553c3c5503cecc28ef2eead6 Mon Sep 17 00:00:00 2001 From: Gard Spreemann Date: Thu, 20 Apr 2017 11:10:45 +0200 Subject: GUDHI 2.0.0 as released by upstream in a tarball. --- example/Subsampling/CMakeLists.txt | 17 ++++++ .../example_choose_n_farthest_points.cpp | 29 ++++++++++ example/Subsampling/example_custom_kernel.cpp | 65 ++++++++++++++++++++++ .../Subsampling/example_pick_n_random_points.cpp | 27 +++++++++ example/Subsampling/example_sparsify_point_set.cpp | 27 +++++++++ 5 files changed, 165 insertions(+) create mode 100644 example/Subsampling/CMakeLists.txt create mode 100644 example/Subsampling/example_choose_n_farthest_points.cpp create mode 100644 example/Subsampling/example_custom_kernel.cpp create mode 100644 example/Subsampling/example_pick_n_random_points.cpp create mode 100644 example/Subsampling/example_sparsify_point_set.cpp (limited to 'example/Subsampling') diff --git a/example/Subsampling/CMakeLists.txt b/example/Subsampling/CMakeLists.txt new file mode 100644 index 00000000..71b8d2e8 --- /dev/null +++ b/example/Subsampling/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 2.6) +project(Subsampling_examples) + +if (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1) + add_executable(Subsampling_example_pick_n_random_points example_pick_n_random_points.cpp) + add_executable(Subsampling_example_choose_n_farthest_points example_choose_n_farthest_points.cpp) + add_executable(Subsampling_example_custom_kernel example_custom_kernel.cpp) + add_executable(Subsampling_example_sparsify_point_set example_sparsify_point_set.cpp) + target_link_libraries(Subsampling_example_sparsify_point_set ${CGAL_LIBRARY}) + + add_test(NAME Subsampling_example_pick_n_random_points + COMMAND $) + add_test(NAME Subsampling_example_choose_n_farthest_points + COMMAND $) + add_test(NAME Subsampling_example_sparsify_point_set + COMMAND $) +endif (NOT CGAL_WITH_EIGEN3_VERSION VERSION_LESS 4.8.1) diff --git a/example/Subsampling/example_choose_n_farthest_points.cpp b/example/Subsampling/example_choose_n_farthest_points.cpp new file mode 100644 index 00000000..ebf631fc --- /dev/null +++ b/example/Subsampling/example_choose_n_farthest_points.cpp @@ -0,0 +1,29 @@ +#include + +#include +#include + +#include +#include + +int main(void) { + typedef CGAL::Epick_d > K; + typedef typename K::Point_d Point_d; + + CGAL::Random rd; + + std::vector points; + for (int i = 0; i < 500; ++i) + points.push_back(Point_d(rd.get_double(-1., 1), rd.get_double(-1., 1), + rd.get_double(-1., 1), rd.get_double(-1., 1))); + + K k; + std::vector results; + Gudhi::subsampling::choose_n_farthest_points(k, points, 100, + Gudhi::subsampling::random_starting_point, + std::back_inserter(results)); + std::cout << "Before sparsification: " << points.size() << " points.\n"; + std::cout << "After sparsification: " << results.size() << " points.\n"; + + return 0; +} diff --git a/example/Subsampling/example_custom_kernel.cpp b/example/Subsampling/example_custom_kernel.cpp new file mode 100644 index 00000000..2d42bdde --- /dev/null +++ b/example/Subsampling/example_custom_kernel.cpp @@ -0,0 +1,65 @@ +#include + +#include +#include + +#include +#include + + +/* The class Kernel contains a distance function defined on the set of points {0, 1, 2, 3} + * and computes a distance according to the matrix: + * 0 1 2 4 + * 1 0 4 2 + * 2 4 0 1 + * 4 2 1 0 + */ +class Kernel { + public: + typedef double FT; + typedef unsigned Point_d; + + // Class Squared_distance_d + class Squared_distance_d { + private: + std::vector> matrix_; + + public: + Squared_distance_d() { + matrix_.push_back(std::vector({0, 1, 2, 4})); + matrix_.push_back(std::vector({1, 0, 4, 2})); + matrix_.push_back(std::vector({2, 4, 0, 1})); + matrix_.push_back(std::vector({4, 2, 1, 0})); + } + + FT operator()(Point_d p1, Point_d p2) { + return matrix_[p1][p2]; + } + }; + + // Constructor + Kernel() {} + + // Object of type Squared_distance_d + Squared_distance_d squared_distance_d_object() const { + return Squared_distance_d(); + } +}; + +int main(void) { + typedef Kernel K; + typedef typename K::Point_d Point_d; + + K k; + std::vector points = {0, 1, 2, 3}; + std::vector results; + + Gudhi::subsampling::choose_n_farthest_points(k, points, 2, + Gudhi::subsampling::random_starting_point, + std::back_inserter(results)); + std::cout << "Before sparsification: " << points.size() << " points.\n"; + std::cout << "After sparsification: " << results.size() << " points.\n"; + std::cout << "Result table: {" << results[0] << "," << results[1] << "}\n"; + + return 0; +} diff --git a/example/Subsampling/example_pick_n_random_points.cpp b/example/Subsampling/example_pick_n_random_points.cpp new file mode 100644 index 00000000..1e38e405 --- /dev/null +++ b/example/Subsampling/example_pick_n_random_points.cpp @@ -0,0 +1,27 @@ +#include + +#include +#include + +#include +#include + +int main(void) { + typedef CGAL::Epick_d > K; + typedef typename K::Point_d Point_d; + + CGAL::Random rd; + + std::vector points; + for (int i = 0; i < 500; ++i) + points.push_back(Point_d(rd.get_double(-1., 1), rd.get_double(-1., 1), + rd.get_double(-1., 1), rd.get_double(-1., 1))); + + K k; + std::vector results; + Gudhi::subsampling::pick_n_random_points(points, 100, std::back_inserter(results)); + std::cout << "Before sparsification: " << points.size() << " points.\n"; + std::cout << "After sparsification: " << results.size() << " points.\n"; + + return 0; +} diff --git a/example/Subsampling/example_sparsify_point_set.cpp b/example/Subsampling/example_sparsify_point_set.cpp new file mode 100644 index 00000000..b35a18d9 --- /dev/null +++ b/example/Subsampling/example_sparsify_point_set.cpp @@ -0,0 +1,27 @@ +#include + +#include +#include + +#include +#include + +int main(void) { + typedef CGAL::Epick_d > K; + typedef typename K::Point_d Point_d; + + CGAL::Random rd; + + std::vector points; + for (int i = 0; i < 500; ++i) + points.push_back(Point_d(rd.get_double(-1., 1), rd.get_double(-1., 1), + rd.get_double(-1., 1), rd.get_double(-1., 1))); + + K k; + std::vector results; + Gudhi::subsampling::sparsify_point_set(k, points, 0.4, std::back_inserter(results)); + std::cout << "Before sparsification: " << points.size() << " points.\n"; + std::cout << "After sparsification: " << results.size() << " points.\n"; + + return 0; +} -- cgit v1.2.3