diff options
author | skachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2017-01-17 22:58:28 +0000 |
---|---|---|
committer | skachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2017-01-17 22:58:28 +0000 |
commit | f6992f0e5eb53d67a567ee0f12d2c16099bcaf1b (patch) | |
tree | 14731c2bbd0f4d7bec8bf94d814470c1b9185fda /src/Witness_complex/test/test_simple_witness_complex.cpp | |
parent | be4e9ebd24f48def07f6dfec1a46791321fbaee4 (diff) |
Added a non-Euclidean version of Witness. Compiles, but doesn't work
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/relaxed-witness@1943 636b058d-ea47-450e-bf9e-a15bfbe3eedb
Former-commit-id: a825e1ad183ae40170414038e70ce37d38e09689
Diffstat (limited to 'src/Witness_complex/test/test_simple_witness_complex.cpp')
-rw-r--r-- | src/Witness_complex/test/test_simple_witness_complex.cpp | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/src/Witness_complex/test/test_simple_witness_complex.cpp b/src/Witness_complex/test/test_simple_witness_complex.cpp index aff6949e..c50e829a 100644 --- a/src/Witness_complex/test/test_simple_witness_complex.cpp +++ b/src/Witness_complex/test/test_simple_witness_complex.cpp @@ -6,8 +6,13 @@ #include <CGAL/Epick_d.h> #include <gudhi/Simplex_tree.h> + #include <gudhi/Witness_complex.h> +#include <gudhi/Euclidean_witness_complex.h> #include <gudhi/Strong_witness_complex.h> +#include <gudhi/Euclidean_strong_witness_complex.h> + +#include <gudhi/Kd_tree_search.h> #include <iostream> #include <ctime> @@ -18,8 +23,15 @@ typedef std::vector< Vertex_handle > typeVectorVertex; typedef CGAL::Epick_d<CGAL::Dynamic_dimension_tag> Kernel; typedef typename Kernel::FT FT; typedef typename Kernel::Point_d Point_d; -typedef Gudhi::witness_complex::Witness_complex<Kernel> WitnessComplex; -typedef Gudhi::witness_complex::Strong_witness_complex<Kernel> StrongWitnessComplex; +typedef Gudhi::witness_complex::Euclidean_witness_complex<Kernel> EuclideanWitnessComplex; +typedef Gudhi::witness_complex::Euclidean_strong_witness_complex<Kernel> EuclideanStrongWitnessComplex; + +typedef std::vector<Point_d> Point_range; +typedef Gudhi::spatial_searching::Kd_tree_search<Kernel, Point_range> Kd_tree; +typedef Kd_tree::INS_range Nearest_landmark_range; +typedef std::vector<Nearest_landmark_range> Nearest_landmark_table; +typedef Gudhi::witness_complex::Witness_complex<Nearest_landmark_table> WitnessComplex; + /* All landmarks and witnesses are taken on the grid in the following manner. LWLWL @@ -33,8 +45,9 @@ typedef Gudhi::witness_complex::Strong_witness_complex<Kernel> StrongWitnessComp BOOST_AUTO_TEST_CASE(simple_witness_complex) { Simplex_tree complex, relaxed_complex, strong_relaxed_complex, strong_relaxed_complex2; - - std::vector<Point_d> witnesses, landmarks; + Simplex_tree complex_ne, relaxed_complex_ne, strong_relaxed_complex_ne, strong_relaxed_complex2_ne; + + Point_range witnesses, landmarks; landmarks.push_back(Point_d(std::vector<FT>{-2,-2})); landmarks.push_back(Point_d(std::vector<FT>{-2, 0})); @@ -56,22 +69,41 @@ BOOST_AUTO_TEST_CASE(simple_witness_complex) { witnesses.push_back(Point_d(std::vector<FT>{ 1, 2})); witnesses.push_back(Point_d(std::vector<FT>{ 2,-1})); witnesses.push_back(Point_d(std::vector<FT>{ 2, 1})); - - WitnessComplex witness_complex(landmarks, - witnesses); - witness_complex.create_complex(complex, 0); + + Kd_tree landmark_tree(landmarks); + Nearest_landmark_table nearest_landmark_table; + for (auto w: witnesses) + nearest_landmark_table.push_back(landmark_tree.query_incremental_nearest_neighbors(w)); + + // Weak witness complex: Euclidean version + EuclideanWitnessComplex eucl_witness_complex(landmarks, + witnesses); + eucl_witness_complex.create_complex(complex, 0); std::cout << "complex.num_simplices() = " << complex.num_simplices() << std::endl; BOOST_CHECK(complex.num_simplices() == 24); - witness_complex.create_complex(relaxed_complex, 8.01); + eucl_witness_complex.create_complex(relaxed_complex, 8.01); std::cout << "relaxed_complex.num_simplices() = " << relaxed_complex.num_simplices() << std::endl; BOOST_CHECK(relaxed_complex.num_simplices() == 239); // The corner simplex {0,2,5,7} and its cofaces are missing. + // Weak witness complex: non-Euclidean version + WitnessComplex witness_complex(nearest_landmark_table); + witness_complex.create_complex(complex_ne, 0); + + std::cout << "complex.num_simplices() = " << complex_ne.num_simplices() << std::endl; + BOOST_CHECK(complex_ne.num_simplices() == 24); + + witness_complex.create_complex(relaxed_complex_ne, 8.01); + + std::cout << "relaxed_complex.num_simplices() = " << relaxed_complex_ne.num_simplices() << std::endl; + BOOST_CHECK(relaxed_complex_ne.num_simplices() == 239); + + - StrongWitnessComplex strong_witness_complex(landmarks, + EuclideanStrongWitnessComplex strong_witness_complex(landmarks, witnesses); strong_witness_complex.create_complex(strong_relaxed_complex, 9.1); |