11 #ifndef INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_
12 #define INCLUDE_TANGENTIAL_COMPLEX_INTERFACE_H_
14 #include <gudhi/Simplex_tree.h>
15 #include <gudhi/Tangential_complex.h>
16 #include <gudhi/Points_off_io.h>
17 #include <CGAL/Epick_d.h>
19 #include "Simplex_tree_interface.h"
28 namespace tangential_complex {
30 class Tangential_complex_interface {
31 using Dynamic_kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
32 using Point_d = Dynamic_kernel::Point_d;
33 using TC = Tangential_complex<Dynamic_kernel, CGAL::Dynamic_dimension_tag, CGAL::Parallel_tag>;
36 Tangential_complex_interface(
int intrisic_dim,
const std::vector<std::vector<double>>& points) {
39 tangential_complex_ =
new TC(points, intrisic_dim, k);
42 Tangential_complex_interface(
int intrisic_dim,
const std::string& off_file_name,
bool from_file =
true) {
46 std::vector<Point_d> points = off_reader.get_point_cloud();
48 tangential_complex_ =
new TC(points, intrisic_dim, k);
51 ~Tangential_complex_interface() {
52 delete tangential_complex_;
55 void compute_tangential_complex() {
56 tangential_complex_->compute_tangential_complex();
57 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
60 std::vector<double> get_point(
unsigned vh) {
61 std::vector<double> vd;
62 if (vh < tangential_complex_->number_of_vertices()) {
63 Point_d ph = tangential_complex_->get_point(vh);
64 for (
auto coord = ph.cartesian_begin(); coord < ph.cartesian_end(); coord++)
70 unsigned number_of_vertices() {
71 return tangential_complex_->number_of_vertices();
74 unsigned number_of_simplices() {
75 return num_inconsistencies_.num_simplices;
78 unsigned number_of_inconsistent_simplices() {
79 return num_inconsistencies_.num_inconsistent_simplices;
82 unsigned number_of_inconsistent_stars() {
83 return num_inconsistencies_.num_inconsistent_stars;
86 void fix_inconsistencies_using_perturbation(
double max_perturb,
double time_limit) {
87 tangential_complex_->fix_inconsistencies_using_perturbation(max_perturb, time_limit);
88 num_inconsistencies_ = tangential_complex_->number_of_inconsistent_simplices();
95 void set_max_squared_edge_length(
double max_squared_edge_length) {
96 tangential_complex_->set_max_squared_edge_length(max_squared_edge_length);
100 TC* tangential_complex_;
OFF file reader implementation in order to read points from an OFF file.
Definition: Points_off_io.h:122
Tangential complex data structure.
Definition: Tangential_complex.h:125
Type returned by Tangential_complex::number_of_inconsistent_simplices.
Definition: Tangential_complex.h:539