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(
int intrisic_dim,
const std::vector<std::vector<double>>& points) {
51 tangential_complex_ =
new TC(points, intrisic_dim, k);
52 tangential_complex_->compute_tangential_complex();
53 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
56 Tangential_complex_interface(
int intrisic_dim,
const std::string& off_file_name,
bool from_file =
true) {
60 std::vector<Point_d> points = off_reader.get_point_cloud();
62 tangential_complex_ =
new TC(points, intrisic_dim, k);
63 tangential_complex_->compute_tangential_complex();
64 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
67 ~Tangential_complex_interface() {
68 delete tangential_complex_;
71 std::vector<double> get_point(
unsigned vh) {
72 std::vector<double> vd;
73 if (vh < tangential_complex_->number_of_vertices()) {
74 Point_d ph = tangential_complex_->get_point(vh);
75 for (
auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
81 unsigned number_of_vertices() {
82 return tangential_complex_->number_of_vertices();
85 unsigned number_of_simplices() {
86 return num_inconsistencies_.num_simplices;
89 unsigned number_of_inconsistent_simplices() {
90 return num_inconsistencies_.num_inconsistent_simplices;
93 unsigned number_of_inconsistent_stars() {
94 return num_inconsistencies_.num_inconsistent_stars;
97 void fix_inconsistencies_using_perturbation(
double max_perturb,
double time_limit) {
98 tangential_complex_->fix_inconsistencies_using_perturbation(max_perturb, time_limit);
99 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
108 TC* tangential_complex_;
109 TC::Num_inconsistencies num_inconsistencies_;
116 #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:800