Go to the documentation of this file.
15 #include <boost/graph/graph_traits.hpp>
16 #include <boost/graph/properties.hpp>
17 #include <boost/iterator/transform_iterator.hpp>
66 struct my_traversal_category :
public boost::vertex_list_graph_tag,
67 public boost::edge_list_graph_tag,
68 public boost::adjacency_graph_tag,
70 public boost::bidirectional_graph_tag
114 template<
typename CellType = vertex_descriptor >
115 struct IncidenceTraits
129 typename boost::graph_traits<
130 FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor >
137 typename boost::graph_traits<
138 FEVV::DataStructures::AIF::AIFMesh >::face_descriptor >
146 :
public graph_traits< FEVV::DataStructures::AIF::AIFMesh >
153 namespace DataStructures {
168 inline std::pair<
typename boost::graph_traits<
170 typename boost::graph_traits<
175 auto vertices_range =
178 return std::pair<
typename boost::graph_traits<
180 typename boost::graph_traits<
182 vertices_range.begin(), vertices_range.end());
189 inline typename boost::graph_traits<
193 return static_cast< typename boost::graph_traits<
202 auto vertex_range_pair =
vertices(sm);
203 auto vertex_iter = vertex_range_pair.first;
205 for(; vertex_iter != vertex_range_pair.second; ++vertex_iter)
207 (*vertex_iter)->SetIndex(index++);
213 inline std::pair<
typename boost::graph_traits<
215 typename boost::graph_traits<
223 typename boost::graph_traits<
225 typename boost::graph_traits<
227 vertices_range.begin(), vertices_range.end());
234 inline std::pair<
typename boost::graph_traits<
236 typename boost::graph_traits<
244 return std::pair<
typename boost::graph_traits<
246 typename boost::graph_traits<
248 edges_range.begin(), edges_range.end());
255 inline typename boost::graph_traits<
259 return static_cast< typename boost::graph_traits<
269 auto edgeRangePair =
edges(sm);
270 auto edgeIter = edgeRangePair.first;
272 for (; edgeIter != edgeRangePair.second; ++edgeIter) {
273 (*edgeIter)->SetIndex(index++);
281 inline typename boost::graph_traits<
285 return static_cast< typename boost::graph_traits<
294 inline typename boost::graph_traits<
308 inline std::pair<
typename boost::graph_traits<
312 typename boost::graph_traits<
314 typename boost::graph_traits<
322 return std::pair< typename GraphTrait::halfedge_descriptor, bool >(
323 h, (h != GraphTrait::null_halfedge()));
330 inline typename boost::graph_traits<
343 inline typename boost::graph_traits<
345 edge(
typename boost::graph_traits<
357 inline std::pair<
typename boost::graph_traits<
360 edge(
typename boost::graph_traits<
362 typename boost::graph_traits<
370 if(e != GraphTrait::null_edge())
372 if((e->get_first_vertex() != u) &&
373 (e->get_second_vertex() != v))
377 return std::pair< typename GraphTrait::edge_descriptor, bool >(
378 e, (e != GraphTrait::null_edge()));
385 inline typename boost::graph_traits<
391 return e->get_first_vertex();
398 inline typename boost::graph_traits<
404 return e->get_second_vertex();
412 inline std::pair<
typename boost::graph_traits<
414 typename boost::graph_traits<
420 auto edges_range = u->GetIncidentEdges();
421 auto e_it = edges_range.begin(), e_ite = edges_range.end();
430 for(; e_it != e_ite; ++e_it)
431 if((*e_it)->get_first_vertex() !=
436 typename boost::graph_traits<
438 typename boost::graph_traits<
440 edges_range.begin(), edges_range.end());
447 inline std::pair<
typename boost::graph_traits<
449 typename boost::graph_traits<
455 auto edges_range = u->GetIncidentEdges();
456 auto e_it = edges_range.begin(), e_ite = edges_range.end();
457 for(; e_it != e_ite; ++e_it)
458 if((*e_it)->get_second_vertex() !=
463 typename boost::graph_traits<
465 typename boost::graph_traits<
467 edges_range.begin(), edges_range.end());
474 IncidenceTraits<
typename boost::graph_traits<
478 IncidenceTraits<
typename boost::graph_traits<
489 IncidenceTraits<
typename boost::graph_traits<
493 IncidenceTraits<
typename boost::graph_traits<
495 out_edge_iterator >(edge_range.begin(), edge_range.end());
501 IncidenceTraits<
typename boost::graph_traits<
505 IncidenceTraits<
typename boost::graph_traits<
516 IncidenceTraits<
typename boost::graph_traits<
520 IncidenceTraits<
typename boost::graph_traits<
522 in_edge_iterator >(face_range.begin(), face_range.end());
526 inline typename boost::graph_traits<
532 return u->GetIncidentEdges().size();
536 inline typename boost::graph_traits<
542 return u->GetIncidentEdges().size();
546 inline typename boost::graph_traits<
552 return u->GetIncidentEdges().size();
556 inline typename boost::graph_traits<
564 return face_range.size();
571 inline typename boost::graph_traits<
577 return f->GetDegree();
584 inline typename boost::graph_traits<
590 return h.get_source();
597 inline typename boost::graph_traits<
599 next(
typename boost::graph_traits<
610 inline typename boost::graph_traits<
612 prev(
typename boost::graph_traits<
623 inline typename boost::graph_traits<
629 return h.opposite(sm);
636 inline typename boost::graph_traits<
642 return h.get_target();
649 inline typename boost::graph_traits<
662 inline typename boost::graph_traits<
664 face(
typename boost::graph_traits<
675 inline std::pair<
typename boost::graph_traits<
677 typename boost::graph_traits<
685 return std::pair<
typename boost::graph_traits<
687 typename boost::graph_traits<
689 faces_range.begin(), faces_range.end());
697 inline typename boost::graph_traits<
712 if(v == GraphTrait::null_vertex())
714 throw std::invalid_argument(
715 "Helpers::add_vertex(v, m) -> vertex is null, cannot add it to mesh.");
741 halfedge_descriptor h,
742 typename boost::graph_traits<
777 typename boost::graph_traits<
792 typename boost::graph_traits<
799 #ifdef USE_ADD_EDGE_AIF // conflict with function in Euler_operations.h (CGAL)
800 inline std::pair<
typename boost::graph_traits<
810 add_edge(
typename boost::graph_traits<
812 typename boost::graph_traits<
825 inline typename boost::graph_traits<
841 if(e == GraphTrait::null_edge())
843 throw std::invalid_argument(
844 "Helpers::add_edge(e, m) -> edge is null, cannot add it to mesh.");
872 typename boost::graph_traits<
892 template<
typename UnaryPredicate >
898 std::vector<
typename boost::graph_traits<
904 std::back_inserter(edges_to_unlink));
906 std::remove_if(edges_to_unlink.begin(), edges_to_unlink.end(), p);
911 template<
typename UnaryPredicate >
914 typename boost::graph_traits<
919 auto edges_range_pair =
out_edges(u, sm);
920 std::vector<
typename boost::graph_traits<
924 edges_range_pair.first,
925 edges_range_pair.second,
926 std::back_inserter(edges_to_unlink));
928 std::remove_if(edges_to_unlink.begin(), edges_to_unlink.end(), p);
933 template<
typename UnaryPredicate >
940 auto edges_range_pair =
in_edges(u, sm);
941 std::vector<
typename boost::graph_traits<
945 edges_range_pair.first,
946 edges_range_pair.second,
947 std::back_inserter(edges_to_unlink));
949 std::remove_if(edges_to_unlink.begin(), edges_to_unlink.end(), p);
984 halfedge_descriptor h,
985 typename boost::graph_traits<
997 typename boost::graph_traits<
1008 typename boost::graph_traits<
1021 typename boost::graph_traits<
1033 typename boost::graph_traits<
1044 typename boost::graph_traits<
1054 inline typename boost::graph_traits<
1072 #ifndef USE_ADD_EDGE_AIF
1077 typename boost::graph_traits<
1101 template<
typename VertexRange >
1102 typename boost::graph_traits<
1110 typename boost::graph_traits< Graph >::face_descriptor face_descriptor;
1112 typename boost::graph_traits< Graph >::edge_descriptor edge_descriptor;
1116 std::vector< vertex_descriptor >
vertices(vr.begin(),
1129 throw std::runtime_error(
"add_face(vr, g) in Graph_traits_aif.h was called with less than 2 vertices");
1150 throw std::runtime_error(
"add_face(vr, g) in Graph_traits_aif.h was called "
1151 "with less than 3 vertices");
1163 for(
unsigned int i = 0; i < nv; i++)
1176 vsource,
edge, AIFHelpers::vertex_pos::FIRST);
1178 vtarget,
edge, AIFHelpers::vertex_pos::SECOND);
static void set_target(halfedge_descriptor h, vertex_descriptor target, AIFMesh &)
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor add_face(const VertexRange &vr, FEVV::DataStructures::AIF::AIFMesh &g)
unsigned int GetNumberOfEdges() const
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_iterator, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_iterator > vertices(const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the iterator range of the vertices of the mesh.
AIFHelpers::size_type vertices_size_type
static edge_descriptor common_edge(vertex_descriptor vertex1, vertex_descriptor vertex2)
void remove_vertex(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, FEVV::DataStructures::AIF::AIFMesh &sm)
Removes v from the mesh.
AIFMeshT::face_type::ptr face_descriptor
void add_in_edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor f)
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertices_size_type num_vertices(const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns an upper bound of the number of vertices of the mesh.
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor next(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the next halfedge around its face.
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::degree_size_type degree(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, const FEVV::DataStructures::AIF::AIFMesh &)
static face_descriptor add_face(ptr_mesh mesh)
AIFMeshT::edge_type::ptr edge_descriptor
AIFMeshT::VertexContainerType::iterator vertex_iterator
FEVV::DataStructures::AIF::AIFMesh AIFMeshT
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor add_edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor s, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor t, FEVV::DataStructures::AIF::AIFMesh &g)
static void link_edge_and_face(edge_descriptor edge, face_descriptor face)
void remove_edge_if(UnaryPredicate p, FEVV::DataStructures::AIF::AIFMesh &sm)
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::out_edge_iterator, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::out_edge_iterator > out_edges(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, const FEVV::DataStructures::AIF::AIFMesh &)
AIFHelpers::out_edge_iterator out_edge_iterator
boost::shared_ptr< Self > ptr
void remove_in_edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor f)
void set_halfedge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, FEVV::DataStructures::AIF::AIFMesh &sm)
Sets the halfedge of v to h. The target vertex of h must be v.
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_iterator, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_iterator > edges(const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the iterator range of the edges of the mesh.
boost::disallow_parallel_edge_tag edge_parallel_category
edge_container_in_vertex::const_iterator out_edge_iterator
vertex_container_in_vertex::const_iterator adjacency_iterator
static void remove_face(face_descriptor face, ptr_mesh mesh)
void set_next(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h1, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h2, FEVV::DataStructures::AIF::AIFMesh &sm)
Sets the successor of h1 around a face to h2, and the prededecessor of h2 to h1.
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor add_face(FEVV::DataStructures::AIF::AIFMesh &sm)
Adds a new face to the graph without initializing the connectivity.
void remove_edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e, FEVV::DataStructures::AIF::AIFMesh &sm)
Remove edge e.
AIFMeshT::EdgeContainerType::iterator edge_iterator
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor opposite(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the halfedge with source and target swapped.
edge_container_in_face::iterator incident_edge_iterator
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor, bool > edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, const FEVV::DataStructures::AIF::AIFMesh &)
Returns the edge with extremities u and v.
static edge_descriptor edge(halfedge_descriptor h, const AIFMesh &)
static edge_descriptor null_edge()
static edge_descriptor add_edge(ptr_mesh mesh)
static boost::iterator_range< face_container_in_vertex::const_iterator > incident_faces(vertex_descriptor vertex)
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::degree_size_type in_degree(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, const FEVV::DataStructures::AIF::AIFMesh &)
static face_descriptor null_face()
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor source(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e, const FEVV::DataStructures::AIF::AIFMesh &)
Returns the source vertex of e.
static void set_halfedge(vertex_descriptor target, halfedge_descriptor h, AIFMesh &)
IncidenceTraits< vertex_descriptor >::out_edge_iterator out_edge_iterator
static void swap_vertices(edge_descriptor edge)
void remove_out_edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor f, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e)
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor add_edge(FEVV::DataStructures::AIF::AIFMesh &sm)
Adds two opposite halfedges to the graph without initializing the connectivity.
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the edge corresponding to h and opposite(h).
static edge_descriptor null_edge()
std::vector< face_type::ptr >::iterator iterator
static void link_vertex_and_edge(vertex_descriptor vertex, edge_descriptor edge, vertex_pos position)
void remove_in_edge_if(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, UnaryPredicate p, FEVV::DataStructures::AIF::AIFMesh &sm)
AIFMeshT::FaceContainerType::iterator face_iterator
unsigned int GetNumberOfVertices() const
void renumber_edge_indices(const FEVV::DataStructures::AIF::AIFMesh &sm)
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::faces_size_type num_faces(const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns an upper bound of the number of faces of the graph.
static void remove_edge(edge_descriptor edge, ptr_mesh mesh)
Interfaces for plugins These interfaces will be used for different plugins.
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_iterator, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_iterator > faces(const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns an iterator range over all faces of the mesh.
static bool is_isolated_vertex(vertex_descriptor vertex)
AIFHelpers::incident_face_iterator in_edge_iterator
face_container_in_edge::iterator incident_face_iterator
FEVV::DataStructures::AIF::AIFTopologyHelpers AIFHelpers
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor halfedge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns a halfedge with target v.
static void set_face(halfedge_descriptor h, face_descriptor face, AIFMesh &)
boost::undirected_tag directed_category
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor target(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e, const FEVV::DataStructures::AIF::AIFMesh &)
Returns the target vertex of e.
AIFHelpers::out_edge_iterator in_edge_iterator
static halfedge_descriptor halfedge(face_descriptor face, const AIFMesh &)
static void set_next(halfedge_descriptor h1, halfedge_descriptor h2, AIFMesh &mesh)
static void remove_vertex(vertex_descriptor vertex, ptr_mesh mesh)
AIFHelpers::size_type faces_size_type
void renumber_vertex_indices(const FEVV::DataStructures::AIF::AIFMesh &sm)
void add_out_edge(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor f, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edge_descriptor e)
std::pair< typename boost::graph_traits< FEVV::CGALPointSet >::vertex_iterator, typename boost::graph_traits< FEVV::CGALPointSet >::vertex_iterator > vertices(FEVV::CGALPointSet &ps)
Returns the iterator range of the vertices of the mesh.
IncidenceTraits< vertex_descriptor >::in_edge_iterator in_edge_iterator
static face_descriptor null_face()
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::edges_size_type num_edges(const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns an upper bound of the number of edges of the graph.
void set_target(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, FEVV::DataStructures::AIF::AIFMesh &sm)
Sets the target vertex of h and the source of opposite(h) to v.
unsigned int GetNumberOfFaces() const
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor add_vertex(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_property_type vp, FEVV::DataStructures::AIF::AIFMesh &sm)
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::in_edge_iterator, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::in_edge_iterator > in_edges(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, const FEVV::DataStructures::AIF::AIFMesh &)
AIFHelpers::size_type edges_size_type
static vertex_descriptor null_vertex()
AIFHelpers::degree_size_type degree_size_type
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor prev(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &sm)
Returns the previous halfedge around its face.
static boost::iterator_range< edge_container_in_vertex::const_iterator > incident_edges(vertex_descriptor vertex)
boost::graph_traits< MeshT >::vertex_descriptor vertex_descriptor
my_traversal_category traversal_category
std::pair< typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::adjacency_iterator, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::adjacency_iterator > adjacent_vertices(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, const FEVV::DataStructures::AIF::AIFMesh &)
This class is an helper class associated to the AIFMesh structure. AIFTopologyHelpers implements all ...
static void clear_vertex(vertex_descriptor vertex)
This class represents an AIF structure. AIF structure can deal with both manifold and non-manifold su...
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor face(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &)
Returns the face incident to halfedge h.
AIFHelpers::incident_edge_iterator out_edge_iterator
static vertex_descriptor add_vertex(ptr_mesh mesh)
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::degree_size_type out_degree(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, const FEVV::DataStructures::AIF::AIFMesh &)
AIFHelpers::adjacency_iterator adjacency_iterator
static halfedge_descriptor null_halfedge()
static std::vector< vertex_descriptor > adjacent_vertices(vertex_descriptor vertex)
AIFHelpers::AIFHalfEdge halfedge_descriptor
FEVV::DataStructures::AIF::AIFMesh AIFMesh
static bool are_incident(vertex_descriptor vertex, edge_descriptor edge)
Function determining if the arguments share an incidence relation.
void EraseIsolatedEdge(edge_type::ptr edge)
void clear_vertex(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor v, FEVV::DataStructures::AIF::AIFMesh &)
edge_container_in_vertex::size_type degree_size_type
void remove_out_edge_if(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor u, UnaryPredicate p, FEVV::DataStructures::AIF::AIFMesh &sm)
void set_face(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor f, FEVV::DataStructures::AIF::AIFMesh &sm)
Sets the corresponding face of h to f.
boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::vertex_descriptor source(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::halfedge_descriptor h, const FEVV::DataStructures::AIF::AIFMesh &)
Returns the source vertex of h.
AIFMeshT::Point vertex_property_type
AIFMeshT::vertex_type::ptr vertex_descriptor
void remove_face(typename boost::graph_traits< FEVV::DataStructures::AIF::AIFMesh >::face_descriptor f, FEVV::DataStructures::AIF::AIFMesh &sm)
Removes f from the mesh.