diff options
author | Hind-M <hind.montassif@gmail.com> | 2021-08-09 16:21:24 +0200 |
---|---|---|
committer | Hind-M <hind.montassif@gmail.com> | 2021-08-09 16:21:24 +0200 |
commit | 91b0ff839b8058d3f5767e6ed80b93c23be2c98a (patch) | |
tree | ba6b3c36cb526bd6dd2544e3f608e6c00cb67241 /src/Cech_complex/example | |
parent | 2bd2f8134daeb65a9fff730fef75c323320faefb (diff) |
First version of cech enhancement
Diffstat (limited to 'src/Cech_complex/example')
-rw-r--r-- | src/Cech_complex/example/cech_complex_example_from_points.cpp | 71 | ||||
-rw-r--r-- | src/Cech_complex/example/cech_complex_step_by_step.cpp | 18 |
2 files changed, 67 insertions, 22 deletions
diff --git a/src/Cech_complex/example/cech_complex_example_from_points.cpp b/src/Cech_complex/example/cech_complex_example_from_points.cpp index 1a1f708c..ac17fc73 100644 --- a/src/Cech_complex/example/cech_complex_example_from_points.cpp +++ b/src/Cech_complex/example/cech_complex_example_from_points.cpp @@ -1,6 +1,8 @@ #include <gudhi/Cech_complex.h> #include <gudhi/Simplex_tree.h> +#include <CGAL/Epeck_d.h> // For EXACT or SAFE version + #include <iostream> #include <string> #include <vector> @@ -8,32 +10,71 @@ int main() { // Type definitions - using Point_cloud = std::vector<std::array<double, 2>>; +// using Point_cloud = std::vector<std::array<double, 2>>; using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>; using Filtration_value = Simplex_tree::Filtration_value; - using Cech_complex = Gudhi::cech_complex::Cech_complex<Simplex_tree, Point_cloud>; + using Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>; + using FT = typename Kernel::FT; + using Point = typename Kernel::Point_d; + using Point_cloud = std::vector<Point>; + using Cech_complex = Gudhi::cech_complex::Cech_complex<Simplex_tree, Point_cloud, Kernel>; Point_cloud points; - points.push_back({1., 0.}); // 0 - points.push_back({0., 1.}); // 1 - points.push_back({2., 1.}); // 2 - points.push_back({3., 2.}); // 3 - points.push_back({0., 3.}); // 4 - points.push_back({3. + std::sqrt(3.), 3.}); // 5 - points.push_back({1., 4.}); // 6 - points.push_back({3., 4.}); // 7 - points.push_back({2., 4. + std::sqrt(3.)}); // 8 - points.push_back({0., 4.}); // 9 - points.push_back({-0.5, 2.}); // 10 +// points.push_back({1., 0.}); // 0 +// points.push_back({0., 1.}); // 1 +// points.push_back({2., 1.}); // 2 +// points.push_back({3., 2.}); // 3 +// points.push_back({0., 3.}); // 4 +// points.push_back({3. + std::sqrt(3.), 3.}); // 5 + +// std::vector<FT> point({0.0, 0.0, 0.0, 0.0}); +// points.emplace_back(point.begin(), point.end()); + + std::vector<FT> point0({1., 0.}); + points.emplace_back(point0.begin(), point0.end()); + std::vector<FT> point1({0., 1.}); + points.emplace_back(point1.begin(), point1.end()); + std::vector<FT> point2({2., 1.}); + points.emplace_back(point2.begin(), point2.end()); + std::vector<FT> point3({3., 2.}); + points.emplace_back(point3.begin(), point3.end()); + std::vector<FT> point4({0., 3.}); + points.emplace_back(point4.begin(), point4.end()); + std::vector<FT> point5({3. + std::sqrt(3.), 3.}); + points.emplace_back(point5.begin(), point5.end()); + +// points.emplace_back(Point(std::vector<FT>({1., 0.}))); +// points.emplace_back(Point(std::vector<FT>({0., 1.}))); +// points.emplace_back(Point(std::vector<FT>({2., 1.}))); +// points.emplace_back(Point(std::vector<FT>({3., 2.}))); +// points.emplace_back(Point(std::vector<FT>({0., 3.}))); +// points.emplace_back(Point(std::vector<FT>({3. + std::sqrt(3.), 3.}))); + + +// points.push_back(Point(1.0, 0.0)); +// points.push_back(Point(0.0, 1.0)); +// points.push_back(Point(2.0, 1.0)); +// points.push_back(Point(3.0, 2.0)); +// points.push_back(Point(0.0, 3.0)); +// points.push_back(Point(3.0 + std::sqrt(3.0), 3.0)); + + +// points.push_back({1., 4.}); // 6 +// points.push_back({3., 4.}); // 7 +// points.push_back({2., 4. + std::sqrt(3.)}); // 8 +// points.push_back({0., 4.}); // 9 +// points.push_back({-0.5, 2.}); // 10 // ---------------------------------------------------------------------------- // Init of a Cech complex from points // ---------------------------------------------------------------------------- - Filtration_value max_radius = 1.; + Filtration_value max_radius = 10.; + std::clog << "Hind: Just before the Cech constructor" << std::endl; Cech_complex cech_complex_from_points(points, max_radius); + std::clog << "Hind: Just after the Cech constructor" << std::endl; Simplex_tree stree; - cech_complex_from_points.create_complex(stree, 2); + cech_complex_from_points.create_complex(stree, 3); // ---------------------------------------------------------------------------- // Display information about the one skeleton Cech complex // ---------------------------------------------------------------------------- diff --git a/src/Cech_complex/example/cech_complex_step_by_step.cpp b/src/Cech_complex/example/cech_complex_step_by_step.cpp index 60ae9712..ac08e6cc 100644 --- a/src/Cech_complex/example/cech_complex_step_by_step.cpp +++ b/src/Cech_complex/example/cech_complex_step_by_step.cpp @@ -13,7 +13,9 @@ #include <gudhi/Simplex_tree.h> #include <gudhi/Points_off_io.h> -#include <gudhi/Miniball.hpp> +#include <gudhi/Miniball.hpp> // TODO to remove ? + +#include <CGAL/Epeck_d.h> #include <boost/program_options.hpp> @@ -34,16 +36,18 @@ using Simplex_tree = Gudhi::Simplex_tree<>; using Simplex_handle = Simplex_tree::Simplex_handle; using Filtration_value = Simplex_tree::Filtration_value; -using Point = std::vector<double>; +// using Point = std::vector<double>; +using Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>; +using Point = typename Kernel::Point_d; using Points_off_reader = Gudhi::Points_off_reader<Point>; using Proximity_graph = Gudhi::Proximity_graph<Simplex_tree>; class Cech_blocker { private: using Point_cloud = std::vector<Point>; - using Point_iterator = Point_cloud::const_iterator; - using Coordinate_iterator = Point::const_iterator; - using Min_sphere = Gudhi::Miniball::Miniball<Gudhi::Miniball::CoordAccessor<Point_iterator, Coordinate_iterator>>; +// using Point_iterator = Point_cloud::const_iterator; +// using Coordinate_iterator = Point::const_iterator; +// using Min_sphere = Gudhi::Miniball::Miniball<Gudhi::Miniball::CoordAccessor<Point_iterator, Coordinate_iterator>>; public: bool operator()(Simplex_handle sh) { @@ -63,14 +67,14 @@ class Cech_blocker { } Cech_blocker(Simplex_tree& simplex_tree, Filtration_value max_radius, const std::vector<Point>& point_cloud) : simplex_tree_(simplex_tree), max_radius_(max_radius), point_cloud_(point_cloud) { - dimension_ = point_cloud_[0].size(); +// dimension_ = point_cloud_[0].size(); } private: Simplex_tree simplex_tree_; Filtration_value max_radius_; std::vector<Point> point_cloud_; - int dimension_; +// int dimension_; }; void program_options(int argc, char* argv[], std::string& off_file_points, Filtration_value& max_radius, int& dim_max); |