From 4fc49c26c7803ae30fb2a8eae8026035dfd124e2 Mon Sep 17 00:00:00 2001 From: Lingjie Zhu Date: Tue, 5 Dec 2017 15:59:45 +0800 Subject: [PATCH] fix naming Chord_vector -> Boundary_chord Border -> Boundary_cycle --- .../include/CGAL/vsa_approximation.h | 94 +++++++++---------- 1 file changed, 42 insertions(+), 52 deletions(-) diff --git a/Surface_mesh_approximation/include/CGAL/vsa_approximation.h b/Surface_mesh_approximation/include/CGAL/vsa_approximation.h index 2a340a63de9..4a08ef30ab9 100644 --- a/Surface_mesh_approximation/include/CGAL/vsa_approximation.h +++ b/Surface_mesh_approximation/include/CGAL/vsa_approximation.h @@ -100,15 +100,14 @@ private: typedef typename boost::graph_traits::face_descriptor face_descriptor; // internal typedefs - typedef CGAL::internal::vertex_property_t Vertex_anchor_tag; typedef typename CGAL::internal::dynamic_property_map::type Vertex_anchor_map; typedef CGAL::internal::face_property_t Face_proxy_tag; typedef typename CGAL::internal::dynamic_property_map::type Face_proxy_map; - typedef std::vector Chord_vector; - typedef typename Chord_vector::iterator Chord_vector_iterator; + typedef std::vector Boundary_chord; + typedef typename Boundary_chord::iterator Boundary_chord_iterator; #ifdef CGAL_SURFACE_MESH_APPROXIMATION_DEBUG public: @@ -174,14 +173,14 @@ private: Point_3 pos; // The position of the anchor. }; - // The border cycle of a region. - // One region may have multiple border cycles. - struct Border { - Border(const halfedge_descriptor &h) + // The boundary cycle of a region. + // One region may have multiple boundary cycles. + struct Boundary_cycle { + Boundary_cycle(const halfedge_descriptor &h) : he_head(h), num_anchors(0) {} - halfedge_descriptor he_head; // The heading halfedge of the border cylce. - std::size_t num_anchors; // The number of anchors on the border. + halfedge_descriptor he_head; // The heading halfedge of the boundary cylce. + std::size_t num_anchors; // The number of anchors on the boundary. }; // Triangle polyhedron builder. @@ -246,7 +245,7 @@ private: // All anchors. std::vector m_anchors; // All borders cycles. - std::vector m_borders; + std::vector m_borders; // The indexed triangle approximation. std::vector > m_tris; @@ -262,8 +261,6 @@ public: m_ptm(NULL), fit_error(NULL), proxy_fitting(NULL), - m_fproxy_map(), - m_vanchor_map(), m_average_edge_length(0.0) { Geom_traits traits; @@ -283,8 +280,6 @@ public: m_vpoint_map(vpoint_map), fit_error(NULL), proxy_fitting(NULL), - m_fproxy_map(), - m_vanchor_map(), m_average_edge_length(0.0) { Geom_traits traits; @@ -302,7 +297,7 @@ public: ~Mesh_approximation() { - if(m_ptm){ + if (m_ptm) { CGAL::internal::remove_property(m_vanchor_map, *(const_cast(m_ptm))); CGAL::internal::remove_property(m_fproxy_map, *(const_cast(m_ptm))); } @@ -991,16 +986,14 @@ public: */ template void get_indexed_boundary_polygons(OutputIterator out_itr) const { - for (typename std::vector::const_iterator bitr = m_borders.begin(); - bitr != m_borders.end(); ++bitr) { + BOOST_FOREACH(const Boundary_cycle &bcycle, m_borders) { std::vector bdr; - const halfedge_descriptor he_mark = bitr->he_head; - halfedge_descriptor he = he_mark; + halfedge_descriptor he = bcycle.he_head; do { - Chord_vector chord; + Boundary_chord chord; walk_to_next_anchor(he, chord); bdr.push_back(get(m_vanchor_map, target(he, *m_ptm))); - } while (he != he_mark); + } while (he != bcycle.he_head); *out_itr++ = bdr; } } @@ -1439,7 +1432,7 @@ private: attach_anchor(he_start); // a new connected border - m_borders.push_back(Border(he_start)); + m_borders.push_back(Boundary_cycle(he_start)); #ifdef CGAL_SURFACE_MESH_APPROXIMATION_DEBUG std::cerr << "#border " << m_borders.size() << std::endl; @@ -1447,7 +1440,7 @@ private: const halfedge_descriptor he_mark = he_start; do { - Chord_vector chord; + Boundary_chord chord; walk_to_next_anchor(he_start, chord); m_borders.back().num_anchors += subdivide_chord(chord.begin(), chord.end(), chord_error, is_relative_to_chord, with_dihedral_angle); @@ -1456,8 +1449,8 @@ private: std::cerr << "#chord_anchor " << m_borders.back().num_anchors << std::endl; #endif - for (Chord_vector_iterator citr = chord.begin(); citr != chord.end(); ++citr) - he_candidates.erase(*citr); + BOOST_FOREACH(const halfedge_descriptor &he, chord) + he_candidates.erase(he); } while (he_start != he_mark); } } @@ -1466,20 +1459,18 @@ private: * @brief Adds anchors to the border cycles with only 2 anchors. */ void add_anchors() { - typedef typename std::vector::iterator BorderIterator; - for (BorderIterator bitr = m_borders.begin(); bitr != m_borders.end(); ++bitr) { - if (bitr->num_anchors > 2) + BOOST_FOREACH(const Boundary_cycle &bcycle, m_borders) { + if (bcycle.num_anchors > 2) continue; // 2 initial anchors at least - CGAL_assertion(bitr->num_anchors == 2); + CGAL_assertion(bcycle.num_anchors == 2); // borders with only 2 initial anchors - const halfedge_descriptor he_mark = bitr->he_head; - Point_3 pt_begin = m_vpoint_map[target(he_mark, *m_ptm)]; + Point_3 pt_begin = m_vpoint_map[target(bcycle.he_head, *m_ptm)]; Point_3 pt_end = pt_begin; - halfedge_descriptor he = he_mark; - Chord_vector chord; + halfedge_descriptor he = bcycle.he_head; + Boundary_chord chord; std::size_t count = 0; do { walk_to_next_border_halfedge(he); @@ -1490,12 +1481,12 @@ private: pt_end = m_vpoint_map[target(he, *m_ptm)]; ++count; } - } while (he != he_mark); + } while (he != bcycle.he_head); // anchor count may be increased to more than 2 afterwards // due to the new anchors added by the neighboring border (< 2 anchors) if (count > 2) { - bitr->num_anchors = count; + const_cast(bcycle).num_anchors = count; continue; } @@ -1504,18 +1495,18 @@ private: Vector_3 chord_vec = vector_functor(pt_begin, pt_end); chord_vec = scale_functor(chord_vec, FT(1.0 / std::sqrt(CGAL::to_double(chord_vec.squared_length())))); - for (Chord_vector_iterator citr = chord.begin(); citr != chord.end(); ++citr) { - Vector_3 vec = vector_functor(pt_begin, m_vpoint_map[target(*citr, *m_ptm)]); + BOOST_FOREACH(const halfedge_descriptor &he, chord) { + Vector_3 vec = vector_functor(pt_begin, m_vpoint_map[target(he, *m_ptm)]); vec = CGAL::cross_product(chord_vec, vec); FT dist(std::sqrt(CGAL::to_double(vec.squared_length()))); if (dist > dist_max) { dist_max = dist; - he_max = *citr; + he_max = he; } } - attach_anchor(he_max); // increase border anchors by one - bitr->num_anchors++; + attach_anchor(he_max); + const_cast(bcycle).num_anchors++; } } @@ -1617,11 +1608,11 @@ private: } // tag all boundary chord - BOOST_FOREACH(const Border &bdr, m_borders) { + BOOST_FOREACH(const Boundary_cycle &bdr, m_borders) { const halfedge_descriptor he_mark = bdr.he_head; halfedge_descriptor he = he_mark; do { - Chord_vector chord; + Boundary_chord chord; walk_to_next_anchor(he, chord); std::vector vdist; @@ -1638,12 +1629,11 @@ private: const std::size_t anchorleft = get(m_vanchor_map, source(chord.front(), *m_ptm)); const std::size_t anchorright = get(m_vanchor_map, target(chord.back(), *m_ptm)); typename std::vector::iterator ditr = vdist.begin() + 1; - for (typename Chord_vector::iterator hitr = chord.begin(); - hitr != chord.end() - 1; ++hitr, ++ditr) { + for (Boundary_chord_iterator citr = chord.begin(); citr != chord.end() - 1; ++citr, ++ditr) { if (*ditr < half_chord_len) - global_vtag_map[to_sgv_map[target(*hitr, *m_ptm)]] = anchorleft; + global_vtag_map[to_sgv_map[target(*citr, *m_ptm)]] = anchorleft; else - global_vtag_map[to_sgv_map[target(*hitr, *m_ptm)]] = anchorright; + global_vtag_map[to_sgv_map[target(*citr, *m_ptm)]] = anchorright; } } while (he != he_mark); } @@ -1683,7 +1673,7 @@ private: * @param[in/out] he_start starting region border halfedge pointing to a vertex associated with an anchor * @param[out] chord recorded path chord */ - void walk_to_next_anchor(halfedge_descriptor &he_start, Chord_vector &chord) const { + void walk_to_next_anchor(halfedge_descriptor &he_start, Boundary_chord &chord) const { do { walk_to_next_border_halfedge(he_start); chord.push_back(he_start); @@ -1715,8 +1705,8 @@ private: * @return the number of anchors of the chord apart from the first one */ std::size_t subdivide_chord( - const Chord_vector_iterator &chord_begin, - const Chord_vector_iterator &chord_end, + const Boundary_chord_iterator &chord_begin, + const Boundary_chord_iterator &chord_end, const FT chord_error, const bool is_relative_to_chord, const bool with_dihedral_angle) { @@ -1731,7 +1721,7 @@ private: return 1; bool if_subdivide = false; - Chord_vector_iterator chord_max; + Boundary_chord_iterator chord_max; const Point_3 &pt_begin = m_vpoint_map[source(he_first, *m_ptm)]; const Point_3 &pt_end = m_vpoint_map[target(he_last, *m_ptm)]; if (anchor_first == anchor_last) { @@ -1739,7 +1729,7 @@ private: CGAL_assertion(chord_size > 2); FT dist_max(0.0); - for (Chord_vector_iterator citr = chord_begin; citr != chord_end; ++citr) { + for (Boundary_chord_iterator citr = chord_begin; citr != chord_end; ++citr) { FT dist = CGAL::squared_distance(pt_begin, m_vpoint_map[target(*citr, *m_ptm)]); dist = FT(std::sqrt(CGAL::to_double(dist))); if (dist > dist_max) { @@ -1756,7 +1746,7 @@ private: FT chord_len(std::sqrt(CGAL::to_double(chord_vec.squared_length()))); chord_vec = scale_functor(chord_vec, FT(1.0) / chord_len); - for (Chord_vector_iterator citr = chord_begin; citr != chord_end; ++citr) { + for (Boundary_chord_iterator citr = chord_begin; citr != chord_end; ++citr) { Vector_3 vec = vector_functor(pt_begin, m_vpoint_map[target(*citr, *m_ptm)]); vec = CGAL::cross_product(chord_vec, vec); FT dist(std::sqrt(CGAL::to_double(vec.squared_length())));