Go to the documentation of this file.
13 #include <CGAL/boost/graph/internal/helpers.h>
14 #include <boost/graph/graph_traits.hpp>
15 #include <CGAL/boost/graph/iterator.h>
17 #include <CGAL/boost/graph/Euler_operations.h>
19 #include <CGAL/boost/graph/helpers.h>
42 template<
typename MutableFaceGraph,
typename Po
intMap >
47 typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
52 typedef boost::graph_traits< MutableFaceGraph > GraphTraits;
53 typedef typename GraphTraits::halfedge_descriptor halfedge_descriptor;
58 if(h == boost::graph_traits< MutableFaceGraph >::null_halfedge())
61 halfedge_descriptor opp_h =
opposite(h, g);
63 if(CGAL::is_border(h, g))
65 if(!CGAL::is_triangle(opp_h, g))
68 else if(CGAL::is_border(opp_h, g))
70 if(!CGAL::is_triangle(h, g))
75 if(!CGAL::is_triangle(h, g) || !CGAL::is_triangle(opp_h, g))
85 <<
"Warning: use CGAL::Euler::split_edge() and CGAL::Euler::split_face"
87 halfedge_descriptor res;
88 if(CGAL::is_border(h, g))
91 CGAL::Euler::split_face(res,
next(opp_h, g), g);
93 else if(CGAL::is_border(opp_h, g))
96 CGAL::Euler::split_face(res,
next(h, g), g);
101 CGAL::Euler::split_face(res,
next(h, g), g);
106 Point((gt.get_x(
get(pm, vs)) + gt.get_x(
get(pm, vt))) * 0.5f,
107 (gt.get_y(
get(pm, vs)) + gt.get_y(
get(pm, vt))) * 0.5f,
108 (gt.get_z(
get(pm, vs)) + gt.get_z(
get(pm, vt))) * 0.5f));
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 >::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.
Refer to Geometry_traits_documentation_dummy for further documentation on provided types and algorith...
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.
FEVV::PCLPointCloudPointMap::value_type get(const FEVV::PCLPointCloudPointMap &pm, FEVV::PCLPointCloudPointMap::key_type key)
Specialization of get(point_map, key) for PCLPointCloud.
Interfaces for plugins These interfaces will be used for different plugins.
void split_edge_euler(MutableFaceGraph &g, PointMap pm, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
Split an edge of the graph. The edge to split is given as a halfedge.
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.
boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor split_edge(MutableFaceIncidentGraph &g, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor e, typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor midpoint_vertex)
Split an edge of the graph.
boost::graph_traits< MeshT >::vertex_descriptor vertex_descriptor
void put(FEVV::PCLPointCloudPointMap &pm, FEVV::PCLPointCloudPointMap::key_type key, const FEVV::PCLPointCloudPointMap::value_type &value)
Specialization of put(point_map, key, value) for PCLPointCloud.