diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/benchmark/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/common/doc/examples.h | 224 | ||||
-rw-r--r-- | src/common/doc/header.html | 1 | ||||
-rw-r--r-- | src/common/doc/installation.h | 177 | ||||
-rw-r--r-- | src/common/doc/main_page.md | 28 | ||||
-rw-r--r-- | src/common/include/gudhi/Points_3D_off_io.h | 4 | ||||
-rw-r--r-- | src/common/include/gudhi/Points_off_io.h | 4 | ||||
-rw-r--r-- | src/common/include/gudhi/random_point_generators.h | 65 | ||||
-rw-r--r-- | src/common/include/gudhi/reader_utils.h | 6 | ||||
-rw-r--r-- | src/common/test/test_distance_matrix_reader.cpp | 2 | ||||
-rw-r--r-- | src/common/utilities/off_file_from_shape_generator.cpp | 2 |
11 files changed, 308 insertions, 209 deletions
diff --git a/src/common/benchmark/CMakeLists.txt b/src/common/benchmark/CMakeLists.txt index a3787d6e..26e4e6af 100644 --- a/src/common/benchmark/CMakeLists.txt +++ b/src/common/benchmark/CMakeLists.txt @@ -1,3 +1,7 @@ project(common_benchmark) add_executable(Graph_simplicial_complex_benchmark Graph_simplicial_complex_benchmark.cpp) + +if (TBB_FOUND) + target_link_libraries(Graph_simplicial_complex_benchmark ${TBB_LIBRARIES}) +endif() diff --git a/src/common/doc/examples.h b/src/common/doc/examples.h index 474f8699..879fb96a 100644 --- a/src/common/doc/examples.h +++ b/src/common/doc/examples.h @@ -1,96 +1,134 @@ -// List of GUDHI examples - Doxygen needs at least a file tag to analyse comments -// In user_version, `find . -name "*.cpp"` in example and utilities folders +// List of GUDHI examples and utils - Doxygen needs at least a file tag to analyse comments +// Generated from scripts/cpp_examples_for_doxygen.py /*! @file Examples - * @example Alpha_complex/Alpha_complex_from_off.cpp - * @example Alpha_complex/Alpha_complex_from_points.cpp - * @example Bottleneck_distance/bottleneck_basic_example.cpp - * @example Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp - * @example Witness_complex/example_nearest_landmark_table.cpp - * @example Witness_complex/example_witness_complex_off.cpp - * @example Witness_complex/example_witness_complex_sphere.cpp - * @example Witness_complex/example_strong_witness_complex_off.cpp - * @example Simplex_tree/mini_simplex_tree.cpp - * @example Simplex_tree/graph_expansion_with_blocker.cpp - * @example Simplex_tree/simple_simplex_tree.cpp - * @example Simplex_tree/simplex_tree_from_cliques_of_graph.cpp - * @example Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp - * @example Simplex_tree/cech_complex_cgal_mini_sphere_3d.cpp - * @example Persistent_cohomology/plain_homology.cpp - * @example Persistent_cohomology/persistence_from_file.cpp - * @example Persistent_cohomology/rips_persistence_step_by_step.cpp - * @example Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp - * @example Persistent_cohomology/custom_persistence_sort.cpp - * @example Persistent_cohomology/persistence_from_simple_simplex_tree.cpp - * @example Persistent_cohomology/rips_multifield_persistence.cpp - * @example Skeleton_blocker/Skeleton_blocker_from_simplices.cpp - * @example Skeleton_blocker/Skeleton_blocker_iteration.cpp - * @example Skeleton_blocker/Skeleton_blocker_link.cpp - * @example Contraction/Garland_heckbert.cpp - * @example Contraction/Rips_contraction.cpp - * @example Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp - * @example common/example_CGAL_3D_points_off_reader.cpp - * @example common/example_vector_double_points_off_reader.cpp - * @example common/example_CGAL_points_off_reader.cpp - * @example Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp - * @example Rips_complex/example_one_skeleton_rips_from_points.cpp - * @example Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp - * @example Rips_complex/example_rips_complex_from_off_file.cpp - * @example Persistence_representations/persistence_intervals.cpp - * @example Persistence_representations/persistence_vectors.cpp - * @example Persistence_representations/persistence_heat_maps.cpp - * @example Persistence_representations/persistence_landscape_on_grid.cpp - * @example Persistence_representations/persistence_landscape.cpp - * @example Tangential_complex/example_basic.cpp - * @example Tangential_complex/example_with_perturb.cpp - * @example Subsampling/example_custom_distance.cpp - * @example Subsampling/example_choose_n_farthest_points.cpp - * @example Subsampling/example_sparsify_point_set.cpp - * @example Subsampling/example_pick_n_random_points.cpp - * @example Nerve_GIC/CoordGIC.cpp - * @example Nerve_GIC/Nerve.cpp - * @example Nerve_GIC/FuncGIC.cpp - * @example Nerve_GIC/VoronoiGIC.cpp - * @example Spatial_searching/example_spatial_searching.cpp - * @example Alpha_complex/alpha_complex_3d_persistence.cpp - * @example Alpha_complex/alpha_complex_persistence.cpp - * @example Alpha_complex/Weighted_alpha_complex_3d_from_points.cpp - * @example Bottleneck_distance/bottleneck_distance.cpp - * @example Witness_complex/weak_witness_persistence.cpp - * @example Witness_complex/strong_witness_persistence.cpp - * @example Bitmap_cubical_complex/cubical_complex_persistence.cpp - * @example Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp - * @example common/off_file_from_shape_generator.cpp - * @example Rips_complex/rips_distance_matrix_persistence.cpp - * @example Rips_complex/rips_persistence.cpp - * @example Persistence_representations/persistence_landscapes_on_grid/create_landscapes_on_grid.cpp - * @example Persistence_representations/persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp - * @example Persistence_representations/persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp - * @example Persistence_representations/persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp - * @example Persistence_representations/persistence_landscapes_on_grid/average_landscapes_on_grid.cpp - * @example Persistence_representations/persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp - * @example Persistence_representations/persistence_intervals/compute_number_of_dominant_intervals.cpp - * @example Persistence_representations/persistence_intervals/plot_persistence_Betti_numbers.cpp - * @example Persistence_representations/persistence_intervals/plot_persistence_intervals.cpp - * @example Persistence_representations/persistence_intervals/plot_histogram_of_intervals_lengths.cpp - * @example Persistence_representations/persistence_intervals/compute_bottleneck_distance.cpp - * @example Persistence_representations/persistence_heat_maps/create_pssk.cpp - * @example Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp - * @example Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp - * @example Persistence_representations/persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp - * @example Persistence_representations/persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp - * @example Persistence_representations/persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp - * @example Persistence_representations/persistence_heat_maps/average_persistence_heat_maps.cpp - * @example Persistence_representations/persistence_heat_maps/plot_persistence_heat_map.cpp - * @example Persistence_representations/persistence_heat_maps/create_persistence_heat_maps.cpp - * @example Persistence_representations/persistence_vectors/plot_persistence_vectors.cpp - * @example Persistence_representations/persistence_vectors/compute_distance_of_persistence_vectors.cpp - * @example Persistence_representations/persistence_vectors/average_persistence_vectors.cpp - * @example Persistence_representations/persistence_vectors/create_persistence_vectors.cpp - * @example Persistence_representations/persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp - * @example Persistence_representations/persistence_landscapes/average_landscapes.cpp - * @example Persistence_representations/persistence_landscapes/compute_scalar_product_of_landscapes.cpp - * @example Persistence_representations/persistence_landscapes/create_landscapes.cpp - * @example Persistence_representations/persistence_landscapes/compute_distance_of_landscapes.cpp - * @example Persistence_representations/persistence_landscapes/plot_landscapes.cpp + * \section Witness_complex_example_section Witness_complex + * @example strong_witness_persistence.cpp + * @example weak_witness_persistence.cpp + * @example example_witness_complex_off.cpp + * @example example_strong_witness_complex_off.cpp + * @example example_nearest_landmark_table.cpp + * @example example_witness_complex_sphere.cpp + * \section Contraction_example_section Contraction + * @example Rips_contraction.cpp + * @example Garland_heckbert.cpp + * \section Simplex_tree_example_section Simplex_tree + * @example mini_simplex_tree.cpp + * @example cech_complex_cgal_mini_sphere_3d.cpp + * @example graph_expansion_with_blocker.cpp + * @example simple_simplex_tree.cpp + * @example simplex_tree_from_cliques_of_graph.cpp + * @example example_alpha_shapes_3_simplex_tree_from_off_file.cpp + * \section Persistent_cohomology_example_section Persistent_cohomology + * @example custom_persistence_sort.cpp + * @example rips_persistence_step_by_step.cpp + * @example persistence_from_file.cpp + * @example rips_persistence_via_boundary_matrix.cpp + * @example plain_homology.cpp + * @example rips_multifield_persistence.cpp + * @example persistence_from_simple_simplex_tree.cpp + * \section Subsampling_example_section Subsampling + * @example example_sparsify_point_set.cpp + * @example example_choose_n_farthest_points.cpp + * @example example_custom_distance.cpp + * @example example_pick_n_random_points.cpp + * \section Toplex_map_example_section Toplex_map + * @example simple_toplex_map.cpp + * \section Collapse_example_section Collapse + * @example distance_matrix_edge_collapse_rips_persistence.cpp + * @example point_cloud_edge_collapse_rips_persistence.cpp + * @example edge_collapse_conserve_persistence.cpp + * @example edge_collapse_basic_example.cpp + * \section Cech_complex_example_section Cech_complex + * @example cech_persistence.cpp + * @example cech_complex_step_by_step.cpp + * @example cech_complex_example_from_points.cpp + * \section Bitmap_cubical_complex_example_section Bitmap_cubical_complex + * @example periodic_cubical_complex_persistence.cpp + * @example cubical_complex_persistence.cpp + * @example Random_bitmap_cubical_complex.cpp + * \section Coxeter_triangulation_example_section Coxeter_triangulation + * @example cell_complex_from_basic_circle_manifold.cpp + * @example manifold_tracing_flat_torus_with_boundary.cpp + * @example manifold_tracing_custom_function.cpp + * \section Nerve_GIC_example_section Nerve_GIC + * @example VoronoiGIC.cpp + * @example Nerve.cpp + * @example CoordGIC.cpp + * @example FuncGIC.cpp + * \section Tangential_complex_example_section Tangential_complex + * @example example_basic.cpp + * @example example_with_perturb.cpp + * \section Persistence_representations_example_section Persistence_representations + * @example persistence_vectors/create_persistence_vectors.cpp + * @example persistence_vectors/compute_scalar_product_of_persistence_vectors.cpp + * @example persistence_vectors/plot_persistence_vectors.cpp + * @example persistence_vectors/average_persistence_vectors.cpp + * @example persistence_vectors/compute_distance_of_persistence_vectors.cpp + * @example persistence_landscapes_on_grid/average_landscapes_on_grid.cpp + * @example persistence_landscapes_on_grid/create_landscapes_on_grid.cpp + * @example persistence_landscapes_on_grid/compute_distance_of_landscapes_on_grid.cpp + * @example persistence_landscapes_on_grid/compute_scalar_product_of_landscapes_on_grid.cpp + * @example persistence_landscapes_on_grid/plot_landscapes_on_grid.cpp + * @example persistence_intervals/compute_birth_death_range_in_persistence_diagram.cpp + * @example persistence_intervals/plot_persistence_Betti_numbers.cpp + * @example persistence_intervals/compute_bottleneck_distance.cpp + * @example persistence_intervals/compute_number_of_dominant_intervals.cpp + * @example persistence_intervals/plot_histogram_of_intervals_lengths.cpp + * @example persistence_intervals/plot_persistence_intervals.cpp + * @example persistence_heat_maps/compute_distance_of_persistence_heat_maps.cpp + * @example persistence_heat_maps/create_pssk.cpp + * @example persistence_heat_maps/create_p_h_m_weighted_by_arctan_of_their_persistence.cpp + * @example persistence_heat_maps/create_p_h_m_weighted_by_distance_from_diagonal.cpp + * @example persistence_heat_maps/create_p_h_m_weighted_by_squared_diag_distance.cpp + * @example persistence_heat_maps/compute_scalar_product_of_persistence_heat_maps.cpp + * @example persistence_heat_maps/plot_persistence_heat_map.cpp + * @example persistence_heat_maps/create_persistence_heat_maps.cpp + * @example persistence_heat_maps/average_persistence_heat_maps.cpp + * @example persistence_landscapes/compute_distance_of_landscapes.cpp + * @example persistence_landscapes/compute_scalar_product_of_landscapes.cpp + * @example persistence_landscapes/average_landscapes.cpp + * @example persistence_landscapes/plot_landscapes.cpp + * @example persistence_landscapes/create_landscapes.cpp + * @example persistence_landscape_on_grid.cpp + * @example persistence_intervals.cpp + * @example persistence_landscape.cpp + * @example persistence_vectors.cpp + * @example sliced_wasserstein.cpp + * @example persistence_heat_maps.cpp + * \section Spatial_searching_example_section Spatial_searching + * @example example_spatial_searching.cpp + * \section Bottleneck_distance_example_section Bottleneck_distance + * @example bottleneck_distance.cpp + * @example bottleneck_basic_example.cpp + * @example alpha_rips_persistence_bottleneck_distance.cpp + * \section common_example_section common + * @example off_file_from_shape_generator.cpp + * @example example_vector_double_points_off_reader.cpp + * @example example_CGAL_points_off_reader.cpp + * @example example_CGAL_3D_points_off_reader.cpp + * \section Alpha_complex_example_section Alpha_complex + * @example alpha_complex_3d_persistence.cpp + * @example alpha_complex_persistence.cpp + * @example Fast_alpha_complex_from_off.cpp + * @example Alpha_complex_3d_from_points.cpp + * @example Alpha_complex_from_off.cpp + * @example Weighted_alpha_complex_3d_from_points.cpp + * @example Weighted_alpha_complex_from_points.cpp + * @example Alpha_complex_from_points.cpp + * \section Skeleton_blocker_example_section Skeleton_blocker + * @example Skeleton_blocker_from_simplices.cpp + * @example Skeleton_blocker_link.cpp + * @example Skeleton_blocker_iteration.cpp + * \section Rips_complex_example_section Rips_complex + * @example rips_persistence.cpp + * @example rips_correlation_matrix_persistence.cpp + * @example sparse_rips_persistence.cpp + * @example rips_distance_matrix_persistence.cpp + * @example example_sparse_rips.cpp + * @example example_rips_complex_from_csv_distance_matrix_file.cpp + * @example example_one_skeleton_rips_from_correlation_matrix.cpp + * @example example_one_skeleton_rips_from_distance_matrix.cpp + * @example example_one_skeleton_rips_from_points.cpp + * @example example_rips_complex_from_off_file.cpp */ diff --git a/src/common/doc/header.html b/src/common/doc/header.html index 9da20bbc..7c20478b 100644 --- a/src/common/doc/header.html +++ b/src/common/doc/header.html @@ -49,6 +49,7 @@ $extrastylesheet <li><a href="/relatedprojects/">Related projects</a></li> <li><a href="/theyaretalkingaboutus/">They are talking about us</a></li> <li><a href="/inaction/">GUDHI in action</a></li> + <li><a href="/etymology/">Etymology</a></li> </ul> </li> <li class="divider"></li> diff --git a/src/common/doc/installation.h b/src/common/doc/installation.h index c2e63a24..ef668dfb 100644 --- a/src/common/doc/installation.h +++ b/src/common/doc/installation.h @@ -30,6 +30,10 @@ make \endverbatim * This action may require to be in the sudoer or administrator of the machine in function of the operating system and * of <a href="https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX.html">CMAKE_INSTALL_PREFIX</a>. * + * \note Python module will be compiled by the `make` command, but `make install` will not install it. Please refer to + * the <a href="https://gudhi.inria.fr/python/latest/installation.html#gudhi-python-module-installation">Python + * module installation documentation</a>. + * * \subsection testsuites Test suites * To test your build, run the following command in a terminal: * \verbatim make test \endverbatim @@ -40,11 +44,8 @@ make \endverbatim * \subsection documentationgeneration Documentation * To generate the documentation, <a target="_blank" href="http://www.doxygen.org/">Doxygen</a> is required. * Run the following command in a terminal: -\verbatim -make doxygen -# Documentation will be generated in the folder YYYY-MM-DD-hh-mm-ss_GUDHI_X.Y.Z/doc/html/ -# You can customize the directory name by calling `cmake -DUSER_VERSION_DIR=/my/custom/folder` -\endverbatim + * \verbatim make doxygen \endverbatim + * Documentation will be generated in a folder named <code>html</code>. * * \subsection helloworld Hello world ! * The <a target="_blank" href="https://github.com/GUDHI/hello-gudhi-world">Hello world for GUDHI</a> @@ -57,7 +58,7 @@ make doxygen * * The following example requires the <a target="_blank" href="http://gmplib.org/">GNU Multiple Precision Arithmetic * Library</a> (GMP) and will not be built if GMP is not installed: - * \li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html"> + * \li <a href="rips_multifield_persistence_8cpp-example.html"> * Persistent_cohomology/rips_multifield_persistence.cpp</a> * * Having GMP version 4.2 or higher installed is recommended. @@ -75,56 +76,58 @@ make doxygen * * The following examples/utilities require the <a target="_blank" href="http://www.cgal.org/">Computational Geometry Algorithms * Library</a> (CGAL \cite cgal:eb-19b) and will not be built if CGAL version 4.11.0 or higher is not installed: - * \li <a href="_simplex_tree_2example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html"> + * \li <a href="example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html"> * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp</a> - * \li <a href="_witness_complex_2strong_witness_persistence_8cpp-example.html"> + * \li <a href="strong_witness_persistence_8cpp-example.html"> * Witness_complex/strong_witness_persistence.cpp</a> - * \li <a href="_witness_complex_2weak_witness_persistence_8cpp-example.html"> + * \li <a href="weak_witness_persistence_8cpp-example.html"> * Witness_complex/weak_witness_persistence.cpp</a> - * \li <a href="_witness_complex_2example_strong_witness_complex_off_8cpp-example.html"> + * \li <a href="example_strong_witness_complex_off_8cpp-example.html"> * Witness_complex/example_strong_witness_complex_off.cpp</a> - * \li <a href="_witness_complex_2example_witness_complex_off_8cpp-example.html"> + * \li <a href="example_witness_complex_off_8cpp-example.html"> * Witness_complex/example_witness_complex_off.cpp</a> - * \li <a href="_witness_complex_2example_witness_complex_sphere_8cpp-example.html"> + * \li <a href="example_witness_complex_sphere_8cpp-example.html"> * Witness_complex/example_witness_complex_sphere.cpp</a> - * \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html"> + * \li <a href="_alpha_complex_from_off_8cpp-example.html"> * Alpha_complex/Alpha_complex_from_off.cpp</a> - * \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html"> + * \li <a href="_alpha_complex_from_points_8cpp-example.html"> * Alpha_complex/Alpha_complex_from_points.cpp</a> - * \li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_persistence_8cpp-example.html"> * Alpha_complex/alpha_complex_persistence.cpp</a> - * \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html"> + * \li <a href="custom_persistence_sort_8cpp-example.html"> * Persistent_cohomology/custom_persistence_sort.cpp</a> - * \li <a href="_bottleneck_distance_2alpha_rips_persistence_bottleneck_distance_8cpp-example.html"> + * \li <a href="alpha_rips_persistence_bottleneck_distance_8cpp-example.html"> * Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp.cpp</a> - * \li <a href="_bottleneck_distance_2bottleneck_basic_example_8cpp-example.html"> + * \li <a href="bottleneck_basic_example_8cpp-example.html"> * Bottleneck_distance/bottleneck_basic_example.cpp</a> - * \li <a href="_bottleneck_distance_2bottleneck_read_file_8cpp-example.html"> + * \li <a href="bottleneck_distance_8cpp-example.html"> * Bottleneck_distance/bottleneck_distance.cpp</a> - * \li <a href="_nerve__g_i_c_2_coord_g_i_c_8cpp-example.html"> + * \li <a href="_coord_g_i_c_8cpp-example.html"> * Nerve_GIC/CoordGIC.cpp</a> - * \li <a href="_nerve__g_i_c_2_func_g_i_c_8cpp-example.html"> + * \li <a href="_func_g_i_c_8cpp-example.html"> * Nerve_GIC/FuncGIC.cpp</a> - * \li <a href="_nerve__g_i_c_2_nerve_8cpp-example.html"> + * \li <a href="_nerve_8cpp-example.html"> * Nerve_GIC/Nerve.cpp</a> - * \li <a href="_nerve__g_i_c_2_voronoi_g_i_c_8cpp-example.html"> + * \li <a href="_voronoi_g_i_c_8cpp-example.html"> * Nerve_GIC/VoronoiGIC.cpp</a> - * \li <a href="_spatial_searching_2example_spatial_searching_8cpp-example.html"> + * \li <a href="example_spatial_searching_8cpp-example.html"> * Spatial_searching/example_spatial_searching.cpp</a> - * \li <a href="_subsampling_2example_choose_n_farthest_points_8cpp-example.html"> + * \li <a href="example_choose_n_farthest_points_8cpp-example.html"> * Subsampling/example_choose_n_farthest_points.cpp</a> - * \li <a href="_subsampling_2example_pick_n_random_points_8cpp-example.html"> + * \li <a href="example_pick_n_random_points_8cpp-example.html"> * Subsampling/example_pick_n_random_points.cpp</a> - * \li <a href="_subsampling_2example_sparsify_point_set_8cpp-example.html"> + * \li <a href="example_sparsify_point_set_8cpp-example.html"> * Subsampling/example_sparsify_point_set.cpp</a> - * \li <a href="_tangential_complex_2example_basic_8cpp-example.html"> + * \li <a href="example_basic_8cpp-example.html"> * Tangential_complex/example_basic.cpp</a> - * \li <a href="_tangential_complex_2example_with_perturb_8cpp-example.html"> + * \li <a href="example_with_perturb_8cpp-example.html"> * Tangential_complex/example_with_perturb.cpp</a> - * \li <a href="_alpha_complex_2_weighted_alpha_complex_3d_from_points_8cpp-example.html"> + * \li <a href="_weighted_alpha_complex_3d_from_points_8cpp-example.html"> * Alpha_complex/Weighted_alpha_complex_3d_from_points.cpp</a> - * \li <a href="_alpha_complex_2alpha_complex_3d_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_3d_persistence_8cpp-example.html"> * Alpha_complex/alpha_complex_3d_persistence.cpp</a> + * \li <a href="_coxeter_triangulation_2manifold_tracing_flat_torus_with_boundary_8cpp-example.html"> + * Coxeter_triangulation/manifold_tracing_flat_torus_with_boundary.cpp</a> * * \subsection eigen Eigen * Some GUDHI modules (cf. \ref main_page "modules list"), and few examples require @@ -133,42 +136,48 @@ make doxygen * * The following examples/utilities require the <a target="_blank" href="http://eigen.tuxfamily.org/">Eigen</a> and will not be * built if Eigen is not installed: - * \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html"> + * \li <a href="_alpha_complex_from_off_8cpp-example.html"> * Alpha_complex/Alpha_complex_from_off.cpp</a> - * \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html"> + * \li <a href="_alpha_complex_from_points_8cpp-example.html"> * Alpha_complex/Alpha_complex_from_points.cpp</a> - * \li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_persistence_8cpp-example.html"> * Alpha_complex/alpha_complex_persistence.cpp</a> - * \li <a href="_alpha_complex_2alpha_complex_3d_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_3d_persistence_8cpp-example.html"> * Alpha_complex/alpha_complex_3d_persistence.cpp</a> - * \li <a href="_alpha_complex_2_weighted_alpha_complex_3d_from_points_8cpp-example.html"> + * \li <a href="_weighted_alpha_complex_3d_from_points_8cpp-example.html"> * Alpha_complex/Weighted_alpha_complex_3d_from_points.cpp</a> - * \li <a href="_bottleneck_distance_2alpha_rips_persistence_bottleneck_distance_8cpp-example.html"> + * \li <a href="alpha_rips_persistence_bottleneck_distance_8cpp-example.html"> * Bottleneck_distance/alpha_rips_persistence_bottleneck_distance.cpp.cpp</a> - * \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html"> + * \li <a href="custom_persistence_sort_8cpp-example.html"> * Persistent_cohomology/custom_persistence_sort.cpp</a> - * \li <a href="_spatial_searching_2example_spatial_searching_8cpp-example.html"> + * \li <a href="example_spatial_searching_8cpp-example.html"> * Spatial_searching/example_spatial_searching.cpp</a> - * \li <a href="_subsampling_2example_choose_n_farthest_points_8cpp-example.html"> + * \li <a href="example_choose_n_farthest_points_8cpp-example.html"> * Subsampling/example_choose_n_farthest_points.cpp</a> - * \li <a href="_subsampling_2example_pick_n_random_points_8cpp-example.html"> + * \li <a href="example_pick_n_random_points_8cpp-example.html"> * Subsampling/example_pick_n_random_points.cpp</a> - * \li <a href="_subsampling_2example_sparsify_point_set_8cpp-example.html"> + * \li <a href="example_sparsify_point_set_8cpp-example.html"> * Subsampling/example_sparsify_point_set.cpp</a> - * \li <a href="_tangential_complex_2example_basic_8cpp-example.html"> + * \li <a href="example_basic_8cpp-example.html"> * Tangential_complex/example_basic.cpp</a> - * \li <a href="_tangential_complex_2example_with_perturb_8cpp-example.html"> + * \li <a href="example_with_perturb_8cpp-example.html"> * Tangential_complex/example_with_perturb.cpp</a> - * \li <a href="_witness_complex_2strong_witness_persistence_8cpp-example.html"> + * \li <a href="strong_witness_persistence_8cpp-example.html"> * Witness_complex/strong_witness_persistence.cpp</a> - * \li <a href="_witness_complex_2weak_witness_persistence_8cpp-example.html"> + * \li <a href="weak_witness_persistence_8cpp-example.html"> * Witness_complex/weak_witness_persistence.cpp</a> - * \li <a href="_witness_complex_2example_strong_witness_complex_off_8cpp-example.html"> + * \li <a href="example_strong_witness_complex_off_8cpp-example.html"> * Witness_complex/example_strong_witness_complex_off.cpp</a> - * \li <a href="_witness_complex_2example_witness_complex_off_8cpp-example.html"> + * \li <a href="example_witness_complex_off_8cpp-example.html"> * Witness_complex/example_witness_complex_off.cpp</a> - * \li <a href="_witness_complex_2example_witness_complex_sphere_8cpp-example.html"> + * \li <a href="example_witness_complex_sphere_8cpp-example.html"> * Witness_complex/example_witness_complex_sphere.cpp</a> + * \li <a href="_coxeter_triangulation_2cell_complex_from_basic_circle_manifold_8cpp-example.html"> + * Coxeter_triangulation/cell_complex_from_basic_circle_manifold.cpp</a> + * \li <a href="_coxeter_triangulation_2manifold_tracing_custom_function_8cpp-example.html"> + * Coxeter_triangulation/manifold_tracing_custom_function.cpp</a> + * \li <a href="_coxeter_triangulation_2manifold_tracing_flat_torus_with_boundary_8cpp-example.html"> + * Coxeter_triangulation/manifold_tracing_flat_torus_with_boundary.cpp</a> * * \subsection tbb Threading Building Blocks * <a target="_blank" href="https://www.threadingbuildingblocks.org/">Intel® TBB</a> lets you easily write parallel @@ -178,74 +187,76 @@ make doxygen * Having Intel® TBB installed is recommended to parallelize and accelerate some GUDHI computations. * * The following examples/utilities are using Intel® TBB if installed: - * \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html"> + * \li <a href="_alpha_complex_from_off_8cpp-example.html"> * Alpha_complex/Alpha_complex_from_off.cpp</a> - * \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html"> + * \li <a href="_alpha_complex_from_points_8cpp-example.html"> * Alpha_complex/Alpha_complex_from_points.cpp</a> - * \li <a href="_alpha_complex_2alpha_complex_3d_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_3d_persistence_8cpp-example.html"> * Alpha_complex/alpha_complex_3d_persistence.cpp</a> - * \li <a href="_alpha_complex_2alpha_complex_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_persistence_8cpp-example.html"> * Alpha_complex/alpha_complex_persistence.cpp</a> - * \li <a href="_bitmap_cubical_complex_2_bitmap_cubical_complex_8cpp-example.html"> + * \li <a href="cubical_complex_persistence_8cpp-example.html"> * Bitmap_cubical_complex/cubical_complex_persistence.cpp</a> - * \li <a href="_bitmap_cubical_complex_2_bitmap_cubical_complex_periodic_boundary_conditions_8cpp-example.html"> + * \li <a href="periodic_cubical_complex_persistence_8cpp-example.html"> * Bitmap_cubical_complex/periodic_cubical_complex_persistence.cpp</a> - * \li <a href="_bitmap_cubical_complex_2_random_bitmap_cubical_complex_8cpp-example.html"> + * \li <a href="_random_bitmap_cubical_complex_8cpp-example.html"> * Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp</a> - * \li <a href="_nerve__g_i_c_2_coord_g_i_c_8cpp-example.html"> + * \li <a href="_coord_g_i_c_8cpp-example.html"> * Nerve_GIC/CoordGIC.cpp</a> - * \li <a href="_nerve__g_i_c_2_func_g_i_c_8cpp-example.html"> + * \li <a href="_func_g_i_c_8cpp-example.html"> * Nerve_GIC/FuncGIC.cpp</a> - * \li <a href="_nerve__g_i_c_2_nerve_8cpp-example.html"> + * \li <a href="_nerve_8cpp-example.html"> * Nerve_GIC/Nerve.cpp</a> - * \li <a href="_nerve__g_i_c_2_voronoi_g_i_c_8cpp-example.html"> + * \li <a href="_voronoi_g_i_c_8cpp-example.html"> * Nerve_GIC/VoronoiGIC.cpp</a> - * \li <a href="_simplex_tree_2simple_simplex_tree_8cpp-example.html"> + * \li <a href="simple_simplex_tree_8cpp-example.html"> * Simplex_tree/simple_simplex_tree.cpp</a> - * \li <a href="_simplex_tree_2example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html"> + * \li <a href="example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html"> * Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp</a> - * \li <a href="_simplex_tree_2simplex_tree_from_cliques_of_graph_8cpp-example.html"> + * \li <a href="simplex_tree_from_cliques_of_graph_8cpp-example.html"> * Simplex_tree/simplex_tree_from_cliques_of_graph.cpp</a> - * \li <a href="_simplex_tree_2graph_expansion_with_blocker_8cpp-example.html"> + * \li <a href="graph_expansion_with_blocker_8cpp-example.html"> * Simplex_tree/graph_expansion_with_blocker.cpp</a> - * \li <a href="_persistent_cohomology_2alpha_complex_3d_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_3d_persistence_8cpp-example.html"> * Persistent_cohomology/alpha_complex_3d_persistence.cpp</a> - * \li <a href="_persistent_cohomology_2alpha_complex_persistence_8cpp-example.html"> + * \li <a href="alpha_complex_persistence_8cpp-example.html"> * Persistent_cohomology/alpha_complex_persistence.cpp</a> - * \li <a href="_persistent_cohomology_2rips_persistence_via_boundary_matrix_8cpp-example.html"> + * \li <a href="rips_persistence_via_boundary_matrix_8cpp-example.html"> * Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp</a> - * \li <a href="_persistent_cohomology_2persistence_from_file_8cpp-example.html"> + * \li <a href="persistence_from_file_8cpp-example.html"> * Persistent_cohomology/persistence_from_file.cpp</a> - * \li <a href="_persistent_cohomology_2persistence_from_simple_simplex_tree_8cpp-example.html"> + * \li <a href="persistence_from_simple_simplex_tree_8cpp-example.html"> * Persistent_cohomology/persistence_from_simple_simplex_tree.cpp</a> - * \li <a href="_persistent_cohomology_2plain_homology_8cpp-example.html"> + * \li <a href="plain_homology_8cpp-example.html"> * Persistent_cohomology/plain_homology.cpp</a> - * \li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html"> + * \li <a href="rips_multifield_persistence_8cpp-example.html"> * Persistent_cohomology/rips_multifield_persistence.cpp</a> - * \li <a href="_persistent_cohomology_2rips_persistence_step_by_step_8cpp-example.html"> + * \li <a href="rips_persistence_step_by_step_8cpp-example.html"> * Persistent_cohomology/rips_persistence_step_by_step.cpp</a> - * \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html"> + * \li <a href="custom_persistence_sort_8cpp-example.html"> * Persistent_cohomology/custom_persistence_sort.cpp</a> - * \li <a href="_rips_complex_2example_one_skeleton_rips_from_points_8cpp-example.html"> + * \li <a href="example_one_skeleton_rips_from_points_8cpp-example.html"> * Rips_complex/example_one_skeleton_rips_from_points.cpp</a> - * \li <a href="_rips_complex_2example_rips_complex_from_off_file_8cpp-example.html"> + * \li <a href="example_rips_complex_from_off_file_8cpp-example.html"> * Rips_complex/example_rips_complex_from_off_file.cpp</a> - * \li <a href="_rips_complex_2rips_distance_matrix_persistence_8cpp-example.html"> + * \li <a href="rips_distance_matrix_persistence_8cpp-example.html"> * Rips_complex/rips_distance_matrix_persistence.cpp</a> - * \li <a href="_rips_complex_2rips_persistence_8cpp-example.html"> + * \li <a href="rips_persistence_8cpp-example.html"> * Rips_complex/rips_persistence.cpp</a> - * \li <a href="_witness_complex_2strong_witness_persistence_8cpp-example.html"> + * \li <a href="strong_witness_persistence_8cpp-example.html"> * Witness_complex/strong_witness_persistence.cpp</a> - * \li <a href="_witness_complex_2weak_witness_persistence_8cpp-example.html"> + * \li <a href="weak_witness_persistence_8cpp-example.html"> * Witness_complex/weak_witness_persistence.cpp</a> - * \li <a href="_witness_complex_2example_nearest_landmark_table_8cpp-example.html"> + * \li <a href="example_nearest_landmark_table_8cpp-example.html"> * Witness_complex/example_nearest_landmark_table.cpp</a> * * \section Contributions Bug reports and contributions - * Please help us improving the quality of the GUDHI library. You may report bugs or suggestions to: - * \verbatim Contact: gudhi-users@lists.gforge.inria.fr \endverbatim + * Please help us improving the quality of the GUDHI library. + * You may <a href="https://github.com/GUDHI/gudhi-devel/issues">report bugs</a> or + * <a href="https://gudhi.inria.fr/contact/">contact us</a> for any suggestions. * - * GUDHI is open to external contributions. If you want to join our development team, please contact us. + * GUDHI is open to external contributions. If you want to join our development team, please take some time to read our + * <a href="https://github.com/GUDHI/gudhi-devel/blob/master/.github/CONTRIBUTING.md">contributing guide</a>. * */ diff --git a/src/common/doc/main_page.md b/src/common/doc/main_page.md index e19af537..17354179 100644 --- a/src/common/doc/main_page.md +++ b/src/common/doc/main_page.md @@ -135,7 +135,7 @@ </tr> </table> -## Filtrations and reconstructions {#FiltrationsReconstructions} +## Filtrations ### Alpha complex <table> @@ -298,6 +298,32 @@ </tr> </table> +## Manifold reconstructions +### Coxeter triangulation + +<table> + <tr> + <td width="35%" rowspan=2> + \image html "manifold_tracing_on_custom_function_example.png" + </td> + <td width="50%"> + Coxeter triangulation module is designed to provide tools for constructing a piecewise-linear approximation of an + \f$m\f$-dimensional smooth manifold embedded in \f$ \mathbb{R}^d \f$ using an ambient triangulation. + </td> + <td width="15%"> + <b>Author:</b> Siargey Kachanovich<br> + <b>Introduced in:</b> GUDHI 3.4.0<br> + <b>Copyright:</b> MIT [(LGPL v3)](../../licensing/)<br> + <b>Requires:</b> \ref eigen ≥ 3.1.0 + </td> + </tr> + <tr> + <td colspan=2 height="25"> + <b>User manual:</b> \ref coxeter_triangulation + </td> + </tr> +</table> + ### Tangential complex <table> diff --git a/src/common/include/gudhi/Points_3D_off_io.h b/src/common/include/gudhi/Points_3D_off_io.h index 39b79c96..4f74fd4b 100644 --- a/src/common/include/gudhi/Points_3D_off_io.h +++ b/src/common/include/gudhi/Points_3D_off_io.h @@ -125,7 +125,7 @@ class Points_3D_off_visitor_reader { * This example loads points from an OFF file and builds a vector of CGAL points in dimension 3. * Then, it is asked to display the points. * - * @include common/example_CGAL_3D_points_off_reader.cpp + * @include example_CGAL_3D_points_off_reader.cpp * * When launching: * @@ -134,7 +134,7 @@ class Points_3D_off_visitor_reader { * * the program output is: * - * @include common/cgal3Doffreader_result.txt + * @include cgal3Doffreader_result.txt */ template<typename Point_3> class Points_3D_off_reader { diff --git a/src/common/include/gudhi/Points_off_io.h b/src/common/include/gudhi/Points_off_io.h index 9dc40568..3aa8afd8 100644 --- a/src/common/include/gudhi/Points_off_io.h +++ b/src/common/include/gudhi/Points_off_io.h @@ -107,7 +107,7 @@ class Points_off_visitor_reader { * This example loads points from an OFF file and builds a vector of points (vector of double). * Then, it is asked to display the points. * - * \include common/example_vector_double_points_off_reader.cpp + * \include example_vector_double_points_off_reader.cpp * * When launching: * @@ -116,7 +116,7 @@ class Points_off_visitor_reader { * * the program outputs a file ../../data/points/alphacomplexdoc.off.txt: * - * \include common/vectordoubleoffreader_result.txt + * \include vectordoubleoffreader_result.txt */ template<typename Point_d> class Points_off_reader { diff --git a/src/common/include/gudhi/random_point_generators.h b/src/common/include/gudhi/random_point_generators.h index 9dd88ac4..25a7392d 100644 --- a/src/common/include/gudhi/random_point_generators.h +++ b/src/common/include/gudhi/random_point_generators.h @@ -18,6 +18,7 @@ #include <CGAL/version.h> // for CGAL_VERSION_NR #include <vector> // for vector<> +#include <boost/math/constants/constants.hpp> // for pi constant // Make compilation fail - required for external projects - https://github.com/GUDHI/gudhi-devel/issues/10 #if CGAL_VERSION_NR < 1041101000 @@ -149,6 +150,8 @@ std::vector<typename Kernel::Point_d> generate_points_on_moment_curve(std::size_ template <typename Kernel/*, typename TC_basis*/> std::vector<typename Kernel::Point_d> generate_points_on_torus_3D(std::size_t num_points, double R, double r, bool uniform = false) { + using namespace boost::math::double_constants; + typedef typename Kernel::Point_d Point; typedef typename Kernel::FT FT; Kernel k; @@ -164,11 +167,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_3D(std::size_t nu if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 6.2832 * k1 / num_lines; - v = 6.2832 * k2 / num_lines; + u = two_pi * k1 / num_lines; + v = two_pi * k2 / num_lines; } else { - u = rng.get_double(0, 6.2832); - v = rng.get_double(0, 6.2832); + u = rng.get_double(0, two_pi); + v = rng.get_double(0, two_pi); } Point p = construct_point(k, (R + r * std::cos(u)) * std::cos(v), @@ -182,11 +185,13 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_3D(std::size_t nu // "Private" function used by generate_points_on_torus_d template <typename Kernel, typename OutputIterator> -static void generate_uniform_points_on_torus_d(const Kernel &k, int dim, std::size_t num_slices, +static void generate_grid_points_on_torus_d(const Kernel &k, int dim, std::size_t num_slices, OutputIterator out, double radius_noise_percentage = 0., std::vector<typename Kernel::FT> current_point = std::vector<typename Kernel::FT>()) { + using namespace boost::math::double_constants; + CGAL::Random rng; int point_size = static_cast<int>(current_point.size()); if (point_size == 2 * dim) { @@ -200,18 +205,20 @@ static void generate_uniform_points_on_torus_d(const Kernel &k, int dim, std::si (100. + radius_noise_percentage) / 100.); } std::vector<typename Kernel::FT> cp2 = current_point; - double alpha = 6.2832 * slice_idx / num_slices; + double alpha = two_pi * slice_idx / num_slices; cp2.push_back(radius_noise_ratio * std::cos(alpha)); cp2.push_back(radius_noise_ratio * std::sin(alpha)); - generate_uniform_points_on_torus_d( + generate_grid_points_on_torus_d( k, dim, num_slices, out, radius_noise_percentage, cp2); } } } template <typename Kernel> -std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num_points, int dim, bool uniform = false, +std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num_points, int dim, std::string sample = "random", double radius_noise_percentage = 0.) { + using namespace boost::math::double_constants; + typedef typename Kernel::Point_d Point; typedef typename Kernel::FT FT; Kernel k; @@ -219,9 +226,9 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num std::vector<Point> points; points.reserve(num_points); - if (uniform) { - std::size_t num_slices = (std::size_t)std::pow(num_points, 1. / dim); - generate_uniform_points_on_torus_d( + if (sample == "grid") { + std::size_t num_slices = (std::size_t)std::pow(num_points + .5, 1. / dim); // add .5 to avoid rounding down with numerical approximations + generate_grid_points_on_torus_d( k, dim, num_slices, std::back_inserter(points), radius_noise_percentage); } else { for (std::size_t i = 0; i < num_points;) { @@ -234,7 +241,7 @@ std::vector<typename Kernel::Point_d> generate_points_on_torus_d(std::size_t num std::vector<typename Kernel::FT> pt; pt.reserve(dim * 2); for (int curdim = 0; curdim < dim; ++curdim) { - FT alpha = rng.get_double(0, 6.2832); + FT alpha = rng.get_double(0, two_pi); pt.push_back(radius_noise_ratio * std::cos(alpha)); pt.push_back(radius_noise_ratio * std::sin(alpha)); } @@ -357,6 +364,8 @@ std::vector<typename Kernel::Point_d> generate_points_on_two_spheres_d(std::size template <typename Kernel> std::vector<typename Kernel::Point_d> generate_points_on_3sphere_and_circle(std::size_t num_points, double sphere_radius) { + using namespace boost::math::double_constants; + typedef typename Kernel::FT FT; typedef typename Kernel::Point_d Point; Kernel k; @@ -370,7 +379,7 @@ std::vector<typename Kernel::Point_d> generate_points_on_3sphere_and_circle(std: for (std::size_t i = 0; i < num_points;) { Point p_sphere = *generator++; // First 3 coords - FT alpha = rng.get_double(0, 6.2832); + FT alpha = rng.get_double(0, two_pi); std::vector<FT> pt(5); pt[0] = k_coord(p_sphere, 0); pt[1] = k_coord(p_sphere, 1); @@ -388,6 +397,8 @@ std::vector<typename Kernel::Point_d> generate_points_on_3sphere_and_circle(std: template <typename Kernel> std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_3D(std::size_t num_points, double a, double b, bool uniform = false) { + using namespace boost::math::double_constants; + typedef typename Kernel::Point_d Point; typedef typename Kernel::FT FT; Kernel k; @@ -403,11 +414,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_3D(std::si if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 6.2832 * k1 / num_lines; - v = 6.2832 * k2 / num_lines; + u = two_pi * k1 / num_lines; + v = two_pi * k2 / num_lines; } else { - u = rng.get_double(0, 6.2832); - v = rng.get_double(0, 6.2832); + u = rng.get_double(0, two_pi); + v = rng.get_double(0, two_pi); } double tmp = cos(u / 2) * sin(v) - sin(u / 2) * sin(2. * v); Point p = construct_point(k, @@ -424,6 +435,8 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_3D(std::si template <typename Kernel> std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_4D(std::size_t num_points, double a, double b, double noise = 0., bool uniform = false) { + using namespace boost::math::double_constants; + typedef typename Kernel::Point_d Point; typedef typename Kernel::FT FT; Kernel k; @@ -439,11 +452,11 @@ std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_4D(std::si if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 6.2832 * k1 / num_lines; - v = 6.2832 * k2 / num_lines; + u = two_pi * k1 / num_lines; + v = two_pi * k2 / num_lines; } else { - u = rng.get_double(0, 6.2832); - v = rng.get_double(0, 6.2832); + u = rng.get_double(0, two_pi); + v = rng.get_double(0, two_pi); } Point p = construct_point(k, (a + b * cos(v)) * cos(u) + (noise == 0. ? 0. : rng.get_double(0, noise)), @@ -463,6 +476,8 @@ template <typename Kernel> std::vector<typename Kernel::Point_d> generate_points_on_klein_bottle_variant_5D( std::size_t num_points, double a, double b, bool uniform = false) { + using namespace boost::math::double_constants; + typedef typename Kernel::Point_d Point; typedef typename Kernel::FT FT; Kernel k; @@ -478,11 +493,11 @@ generate_points_on_klein_bottle_variant_5D( if (uniform) { std::size_t k1 = i / num_lines; std::size_t k2 = i % num_lines; - u = 6.2832 * k1 / num_lines; - v = 6.2832 * k2 / num_lines; + u = two_pi * k1 / num_lines; + v = two_pi * k2 / num_lines; } else { - u = rng.get_double(0, 6.2832); - v = rng.get_double(0, 6.2832); + u = rng.get_double(0, two_pi); + v = rng.get_double(0, two_pi); } FT x1 = (a + b * cos(v)) * cos(u); FT x2 = (a + b * cos(v)) * sin(u); diff --git a/src/common/include/gudhi/reader_utils.h b/src/common/include/gudhi/reader_utils.h index 0938f5c1..a1b104e2 100644 --- a/src/common/include/gudhi/reader_utils.h +++ b/src/common/include/gudhi/reader_utils.h @@ -14,7 +14,11 @@ #include <gudhi/graph_simplicial_complex.h> #include <gudhi/Debug_utils.h> -#include <boost/function_output_iterator.hpp> +#if BOOST_VERSION < 106600 +# include <boost/function_output_iterator.hpp> +#else +# include <boost/iterator/function_output_iterator.hpp> +#endif #include <boost/graph/adjacency_list.hpp> #include <iostream> diff --git a/src/common/test/test_distance_matrix_reader.cpp b/src/common/test/test_distance_matrix_reader.cpp index 73be8104..92e899b8 100644 --- a/src/common/test/test_distance_matrix_reader.cpp +++ b/src/common/test/test_distance_matrix_reader.cpp @@ -57,7 +57,7 @@ BOOST_AUTO_TEST_CASE( full_square_distance_matrix ) { Distance_matrix from_full_square; // Read full_square_distance_matrix.csv file where the separator is the default one ';' - from_full_square = Gudhi::read_lower_triangular_matrix_from_csv_file<double>("full_square_distance_matrix.csv"); + from_full_square = Gudhi::read_lower_triangular_matrix_from_csv_file<double>("full_square_distance_matrix.csv", ';'); for (auto& i : from_full_square) { for (auto j : i) { std::clog << j << " "; diff --git a/src/common/utilities/off_file_from_shape_generator.cpp b/src/common/utilities/off_file_from_shape_generator.cpp index 6efef4fc..71ede434 100644 --- a/src/common/utilities/off_file_from_shape_generator.cpp +++ b/src/common/utilities/off_file_from_shape_generator.cpp @@ -135,7 +135,7 @@ int main(int argc, char **argv) { if (dimension == 3) points = Gudhi::generate_points_on_torus_3D<K>(points_number, dimension, radius, radius/2.); else - points = Gudhi::generate_points_on_torus_d<K>(points_number, dimension, true); + points = Gudhi::generate_points_on_torus_d<K>(points_number, dimension, "grid"); break; case Data_shape::klein: switch (dimension) { |