diff options
author | vrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2017-01-20 15:33:53 +0000 |
---|---|---|
committer | vrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2017-01-20 15:33:53 +0000 |
commit | 3f451b963739a595d990be5517d386259ddb487f (patch) | |
tree | 4e6b8ccbf21c28c103effd9342f75907c89cf42a /src/Tangential_complex/include/gudhi/Tangential_complex.h | |
parent | ad6a64ad5a4f4121410250021eda0904eb9c718c (diff) | |
parent | cbf1a50068a2c5dea6d732d40dfc66d34460d863 (diff) |
Merge last trunk modifications in qt5 branch
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/qt5@1976 636b058d-ea47-450e-bf9e-a15bfbe3eedb
Former-commit-id: 7f8c5b9443bf0996347fe459fe21c42a2fed0cca
Diffstat (limited to 'src/Tangential_complex/include/gudhi/Tangential_complex.h')
-rw-r--r-- | src/Tangential_complex/include/gudhi/Tangential_complex.h | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/src/Tangential_complex/include/gudhi/Tangential_complex.h b/src/Tangential_complex/include/gudhi/Tangential_complex.h index e748d3b7..cfc82eb1 100644 --- a/src/Tangential_complex/include/gudhi/Tangential_complex.h +++ b/src/Tangential_complex/include/gudhi/Tangential_complex.h @@ -63,6 +63,7 @@ #include <iterator> #include <cmath> // for std::sqrt #include <string> +#include <cstddef> // for std::size_t #ifdef GUDHI_USE_TBB #include <tbb/parallel_for.h> @@ -82,7 +83,7 @@ using namespace internal; class Vertex_data { public: - Vertex_data(std::size_t data = std::numeric_limits<std::size_t>::max()) + Vertex_data(std::size_t data = (std::numeric_limits<std::size_t>::max)()) : m_data(data) { } operator std::size_t() { @@ -1048,7 +1049,7 @@ class Tangential_complex { #endif // GUDHI_USE_TBB bool is_infinite(Simplex const& s) const { - return *s.rbegin() == std::numeric_limits<std::size_t>::max(); + return *s.rbegin() == (std::numeric_limits<std::size_t>::max)(); } // Output: "triangulation" is a Regular Triangulation containing at least the @@ -1130,7 +1131,7 @@ class Tangential_complex { Tr_vertex_handle vh = triangulation.insert_if_in_star(proj_pt, center_vertex); // Tr_vertex_handle vh = triangulation.insert(proj_pt); - if (vh != Tr_vertex_handle()) { + if (vh != Tr_vertex_handle() && vh->data() == (std::numeric_limits<std::size_t>::max)()) { #ifdef GUDHI_TC_VERY_VERBOSE ++num_inserted_points; #endif @@ -1292,6 +1293,8 @@ class Tangential_complex { if (index != i) incident_simplex.insert(index); } + GUDHI_CHECK(incident_simplex.size() == cur_dim_plus_1 - 1, + std::logic_error("update_star: wrong size of incident simplex")); star.push_back(incident_simplex); } } @@ -1303,21 +1306,14 @@ class Tangential_complex { , bool normalize_basis = true , Orthogonal_space_basis *p_orth_space_basis = NULL ) { - unsigned int num_pts_for_pca = static_cast<unsigned int> (std::pow(GUDHI_TC_BASE_VALUE_FOR_PCA, m_intrinsic_dim)); + unsigned int num_pts_for_pca = (std::min)(static_cast<unsigned int> (std::pow(GUDHI_TC_BASE_VALUE_FOR_PCA, m_intrinsic_dim)), + static_cast<unsigned int> (m_points.size())); // Kernel functors typename K::Construct_vector_d constr_vec = m_k.construct_vector_d_object(); typename K::Compute_coordinate_d coord = m_k.compute_coordinate_d_object(); - typename K::Squared_length_d sqlen = - m_k.squared_length_d_object(); - typename K::Scaled_vector_d scaled_vec = - m_k.scaled_vector_d_object(); - typename K::Scalar_product_d scalar_pdct = - m_k.scalar_product_d_object(); - typename K::Difference_of_vectors_d diff_vec = - m_k.difference_of_vectors_d_object(); #ifdef GUDHI_TC_USE_ANOTHER_POINT_SET_FOR_TANGENT_SPACE_ESTIM KNS_range kns_range = m_points_ds_for_tse.query_k_nearest_neighbors( @@ -1392,7 +1388,8 @@ class Tangential_complex { // on it. Note that most points are duplicated. Tangent_space_basis compute_tangent_space(const Simplex &s, bool normalize_basis = true) { - unsigned int num_pts_for_pca = static_cast<unsigned int> (std::pow(GUDHI_TC_BASE_VALUE_FOR_PCA, m_intrinsic_dim)); + unsigned int num_pts_for_pca = (std::min)(static_cast<unsigned int> (std::pow(GUDHI_TC_BASE_VALUE_FOR_PCA, m_intrinsic_dim)), + static_cast<unsigned int> (m_points.size())); // Kernel functors typename K::Construct_vector_d constr_vec = @@ -1650,7 +1647,7 @@ class Tangential_complex { for (; it_point_idx != simplex.end(); ++it_point_idx) { std::size_t point_idx = *it_point_idx; // Don't check infinite simplices - if (point_idx == std::numeric_limits<std::size_t>::max()) + if (point_idx == (std::numeric_limits<std::size_t>::max)()) continue; Star const& star = m_stars[point_idx]; @@ -1689,7 +1686,7 @@ class Tangential_complex { for (; it_point_idx != s.end(); ++it_point_idx) { std::size_t point_idx = *it_point_idx; // Don't check infinite simplices - if (point_idx == std::numeric_limits<std::size_t>::max()) + if (point_idx == (std::numeric_limits<std::size_t>::max)()) continue; Star const& star = m_stars[point_idx]; @@ -1900,7 +1897,7 @@ class Tangential_complex { #ifdef GUDHI_TC_EXPORT_ALL_COORDS_IN_OFF int num_coords = m_ambient_dim; #else - int num_coords = std::min(m_ambient_dim, 3); + int num_coords = (std::min)(m_ambient_dim, 3); #endif #ifdef GUDHI_TC_EXPORT_NORMALS @@ -1955,7 +1952,7 @@ class Tangential_complex { Triangulation const& tr = it_tr->tr(); Tr_vertex_handle center_vh = it_tr->center_vertex(); - if (&tr == NULL || tr.current_dimension() < m_intrinsic_dim) + if (tr.current_dimension() < m_intrinsic_dim) continue; // Color for this star @@ -2154,7 +2151,7 @@ class Tangential_complex { typedef std::vector<Simplex> Triangles; Triangles triangles; - std::size_t num_vertices = c.size(); + int num_vertices = static_cast<int>(c.size()); // Do not export smaller dimension simplices if (num_vertices < m_intrinsic_dim + 1) continue; |