Created
March 3, 2020 08:20
-
-
Save VincentRouvreau/feb35ac8f3b590068cd64d0745798b2e to your computer and use it in GitHub Desktop.
Delaunay complex test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <gudhi/Alpha_complex.h> | |
// to construct a simplex_tree from alpha complex | |
#include <gudhi/Simplex_tree.h> | |
#include <CGAL/Epeck_d.h> | |
#include <iostream> | |
#include <vector> | |
// Explicit dimension 2 Epeck_d kernel | |
using Kernel = CGAL::Epeck_d< CGAL::Dimension_tag<2> >; | |
using Point = Kernel::Point_d; | |
using Vector_of_points = std::vector<Point>; | |
int main() { | |
// ---------------------------------------------------------------------------- | |
// Init of a list of points | |
// ---------------------------------------------------------------------------- | |
Vector_of_points points; | |
points.push_back(Point(1.0, 1.0)); | |
points.push_back(Point(7.0, 0.0)); | |
points.push_back(Point(4.0, 6.0)); | |
points.push_back(Point(9.0, 6.0)); | |
points.push_back(Point(0.0, 14.0)); | |
points.push_back(Point(2.0, 19.0)); | |
points.push_back(Point(9.0, 17.0)); | |
// ---------------------------------------------------------------------------- | |
// Init of an alpha complex from the list of points | |
// ---------------------------------------------------------------------------- | |
Gudhi::alpha_complex::Alpha_complex<Kernel> alpha_complex_from_points(points); | |
Gudhi::Simplex_tree<> simplex; | |
if (alpha_complex_from_points.create_complex(simplex, 0., true, true)) { | |
Gudhi::Simplex_tree<>::Simplex_handle sh = simplex.find({0}); | |
simplex.assign_filtration(simplex.find({0}), 1.); | |
simplex.assign_filtration(simplex.find({1}), 2.); | |
simplex.assign_filtration(simplex.find({2}), 3.); | |
simplex.assign_filtration(simplex.find({3}), 4.); | |
simplex.assign_filtration(simplex.find({4}), 5.); | |
simplex.assign_filtration(simplex.find({5}), 6.); | |
simplex.assign_filtration(simplex.find({6}), 7.); | |
simplex.make_filtration_non_decreasing(); | |
// ---------------------------------------------------------------------------- | |
// Display information about the alpha complex | |
// ---------------------------------------------------------------------------- | |
std::cout << "Alpha complex is of dimension " << simplex.dimension() << | |
" - " << simplex.num_simplices() << " simplices - " << | |
simplex.num_vertices() << " vertices." << std::endl; | |
std::cout << "Iterator on alpha complex simplices in the filtration order, with [filtration value]:" << std::endl; | |
for (auto f_simplex : simplex.filtration_simplex_range()) { | |
std::cout << " ( "; | |
for (auto vertex : simplex.simplex_vertex_range(f_simplex)) { | |
std::cout << vertex << " "; | |
} | |
std::cout << ") -> " << "[" << simplex.filtration(f_simplex) << "] "; | |
std::cout << std::endl; | |
} | |
} | |
return 0; | |
} | |
/* With the proposed fix https://github.com/GUDHI/gudhi-devel/issues/172 it works - Without, all is NaN after make_filtration_non_decreasing | |
Alpha complex is of dimension 2 - 25 simplices - 7 vertices. | |
Iterator on alpha complex simplices in the filtration order, with [filtration value]: | |
( 0 ) -> [1] | |
( 1 ) -> [2] | |
( 1 0 ) -> [2] | |
( 2 ) -> [3] | |
( 2 0 ) -> [3] | |
( 2 1 ) -> [3] | |
( 2 1 0 ) -> [3] | |
( 3 ) -> [4] | |
( 3 1 ) -> [4] | |
( 3 2 ) -> [4] | |
( 3 2 1 ) -> [4] | |
( 4 ) -> [5] | |
( 4 0 ) -> [5] | |
( 4 2 ) -> [5] | |
( 4 2 0 ) -> [5] | |
( 5 ) -> [6] | |
( 5 4 ) -> [6] | |
( 6 ) -> [7] | |
( 6 2 ) -> [7] | |
( 6 3 ) -> [7] | |
( 6 3 2 ) -> [7] | |
( 6 4 ) -> [7] | |
( 6 4 2 ) -> [7] | |
( 6 5 ) -> [7] | |
( 6 5 4 ) -> [7] | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment