13 #include <boost/graph/graph_traits.hpp>
31 template<
typename FaceInc
identGraph >
34 const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor
36 const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor
38 const FaceIncidentGraph &g)
60 template<
typename FaceInc
identGraph >
65 const FaceIncidentGraph &g)
67 auto edges_range_pair =
in_edges(v_to_keep, g);
68 auto iter_e = edges_range_pair.first;
69 for(; iter_e != edges_range_pair.second; ++iter_e)
71 auto iter_e_bis = iter_e;
73 for(; iter_e_bis != edges_range_pair.second; ++iter_e_bis)
97 template<
typename FaceInc
identGraph >
100 const typename boost::graph_traits< FaceIncidentGraph >::face_descriptor f1,
101 const typename boost::graph_traits< FaceIncidentGraph >::face_descriptor f2,
102 const FaceIncidentGraph &g,
103 bool take_into_account_face_rientation =
111 auto edges_range_pair =
out_edges(f1, g);
112 auto iter_e = edges_range_pair.first;
113 for(; iter_e != edges_range_pair.second; ++iter_e)
115 bool is_similar =
false;
116 auto edges_range_pair2 =
out_edges(f2, g);
117 auto iter_e2 = edges_range_pair2.first;
118 for(; iter_e2 != edges_range_pair2.second; ++iter_e2)
122 if(take_into_account_face_rientation)
125 auto iter_ee = iter_e;
129 if(iter_e == edges_range_pair.second)
130 iter_e = edges_range_pair.first;
132 if(iter_e2 == edges_range_pair2.second)
133 iter_e2 = edges_range_pair2.first;
136 *iter_e, *iter_e2, g))
139 }
while(iter_e != iter_ee);
169 template<
typename FaceInc
identGraph >
172 const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor
174 const FaceIncidentGraph &g)
176 auto face_range_pair =
in_edges(e_to_keep, g);
177 auto iter_f = face_range_pair.first;
178 for(; iter_f != face_range_pair.second; ++iter_f)
180 auto iter_f_bis = iter_f;
182 for(; iter_f_bis != face_range_pair.second; ++iter_f_bis)
203 template<
typename FaceInc
identGraph >
208 const FaceIncidentGraph &g)
210 auto edge_range_pair =
in_edges(v_to_keep, g);
211 auto iter_e = edge_range_pair.first;
212 for(; iter_e != edge_range_pair.second; ++iter_e)
214 if(Operators::contains_similar_incident_faces<FaceIncidentGraph>(*iter_e, g))
232 template<
typename Inc
identMutableFaceGraph >
235 const typename boost::graph_traits<
236 IncidentMutableFaceGraph >::edge_descriptor e,
237 const IncidentMutableFaceGraph &g)
239 auto face_range_pair =
in_edges(e, g);
240 auto iter = face_range_pair.first;
241 for(; iter != face_range_pair.second; ++iter)