23 #ifndef INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_ 24 #define INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_ 26 #include <gudhi/Simplex_tree.h> 27 #include <gudhi/Tangential_complex.h> 28 #include <gudhi/Points_off_io.h> 29 #include <CGAL/Epick_d.h> 31 #include "Simplex_tree_interface.h" 40 namespace tangential_complex {
42 class Tangential_complex_interface {
43 using Dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
44 using Point_d = Dynamic_kernel::Point_d;
45 using TC = Tangential_complex<Dynamic_kernel, CGAL::Dynamic_dimension_tag, CGAL::Parallel_tag>;
48 Tangential_complex_interface(
const std::vector<std::vector<double>>& points) {
50 unsigned intrisic_dim = 0;
51 if (points.size() > 0)
52 intrisic_dim = points[0].size() - 1;
54 tangential_complex_ =
new TC(points, intrisic_dim, k);
55 tangential_complex_->compute_tangential_complex();
56 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
59 Tangential_complex_interface(
const std::string& off_file_name,
bool from_file =
true) {
62 unsigned intrisic_dim = 0;
63 std::vector<Point_d> points = off_reader.get_point_cloud();
64 if (points.size() > 0)
65 intrisic_dim = points[0].size() - 1;
67 tangential_complex_ =
new TC(points, intrisic_dim, k);
68 tangential_complex_->compute_tangential_complex();
69 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
72 ~Tangential_complex_interface() {
73 delete tangential_complex_;
76 std::vector<double> get_point(
unsigned vh) {
77 std::vector<double> vd;
78 if (vh < tangential_complex_->number_of_vertices()) {
79 Point_d ph = tangential_complex_->get_point(vh);
80 for (
auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
86 unsigned number_of_vertices() {
87 return tangential_complex_->number_of_vertices();
90 unsigned number_of_simplices() {
91 return num_inconsistencies_.num_simplices;
94 unsigned number_of_inconsistent_simplices() {
95 return num_inconsistencies_.num_inconsistent_simplices;
98 unsigned number_of_inconsistent_stars() {
99 return num_inconsistencies_.num_inconsistent_stars;
102 void fix_inconsistencies_using_perturbation(
double max_perturb,
double time_limit) {
103 tangential_complex_->fix_inconsistencies_using_perturbation(max_perturb, time_limit);
104 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
113 TC* tangential_complex_;
114 TC::Num_inconsistencies num_inconsistencies_;
121 #endif // INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_ Simplex Tree data structure for representing simplicial complexes.
Definition: Simplex_tree.h:72
OFF file reader implementation in order to read points from an OFF file.
Definition: Points_off_io.h:134
Definition: SimplicialComplexForAlpha.h:26
void initialize_filtration()
Initializes the filtrations, i.e. sort the simplices according to their order in the filtration and i...
Definition: Simplex_tree.h:796