Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save VincentRouvreau/feb35ac8f3b590068cd64d0745798b2e to your computer and use it in GitHub Desktop.
Save VincentRouvreau/feb35ac8f3b590068cd64d0745798b2e to your computer and use it in GitHub Desktop.
Delaunay complex test
#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