\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 4.9.1 - CGAL and the Boost Graph Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL Namespace Reference

Namespaces

 Euler
 
 internal
 Operation on faces.
 

Classes

class  halfedge_graph_traits< Polyhedron_3< Traits > >
 
class  HalfedgeDS_face_max_base_with_id
 The class HalfedgeDS_face_max_base_with_id is a model of the HalfedgeDSFace concept. More...
 
class  HalfedgeDS_halfedge_max_base_with_id
 The class HalfedgeDS_halfedge_max_base_with_id is a model of the HalfedgeDSHalfedge concept. More...
 
class  HalfedgeDS_vertex_max_base_with_id
 The class HalfedgeDS_vertex_max_base_with_id is a model of the HalfedgeDSVertex concept. More...
 
class  Polyhedron_items_with_id_3
 The class Polyhedron_items_with_id_3 is a model of the PolyhedronItems_3 concept. More...
 
class  Triangulation_vertex_base_with_id_2
 The class Triangulation_vertex_base_with_id_2 is a model of the concept TriangulationVertexBase_2, the base vertex of a 2D-triangulation. More...
 
class  Halfedge_around_source_iterator
 A bidirectional iterator with value type boost::graph_traits<Graph>::halfedge_descriptor over all halfedges having the same vertex as source. More...
 
class  Halfedge_around_target_iterator
 A bidirectional iterator with value type boost::graph_traits<Graph>::halfedge_descriptor over all halfedges having the same vertex as target. More...
 
class  Halfedge_around_face_iterator
 A bidirectional iterator with value type boost::graph_traits<Graph>::halfedge_descriptor over all halfedges incident to the same face or border. More...
 
class  Halfedge_around_target_circulator
 A bidirectional circulator with value type boost::graph_traits<Graph>::halfedge_descriptor over all halfedges having the same vertex as target. More...
 
class  Halfedge_around_source_circulator
 A bidirectional circulator with value type boost::graph_traits<Graph>::halfedge_descriptor over all halfedges having the same vertex as source. More...
 
class  Face_around_target_circulator
 A bidirectional circulator with value type boost::graph_traits<Graph>::face_descriptor over all faces incident to the same vertex. More...
 
class  Halfedge_around_face_circulator
 A bidirectional circulator with value type boost::graph_traits<Graph>::halfedge_descriptor over all halfedges incident to the same face or border. More...
 
class  Face_around_face_iterator
 A bidirectional iterator with value type boost::graph_traits<Graph>::face_descriptor. More...
 
class  Face_around_face_circulator
 A bidirectional circulator with value type boost::graph_traits<Graph>::face_descriptor. More...
 
class  Face_around_target_iterator
 
class  Vertex_around_face_circulator
 
class  Vertex_around_face_iterator
 A bidirectional iterator with value type boost::graph_traits<Graph>::vertex_descriptor over all vertices incident to the same face or border. More...
 
class  Opposite_edge_around_face_iterator
 
class  Edge_around_face_iterator
 
class  Vertex_around_target_circulator
 A bidirectional circulator with value type boost::graph_traits<Graph>::vertex_descriptor over all vertices adjacent to the same vertex. More...
 
class  Vertex_around_target_iterator
 
class  Out_edge_iterator
 
class  In_edge_iterator
 
class  Dual
 The class template Dual is an adaptor that creates the dual view of a FaceGraph. More...
 
struct  Property_map_value_dummy
 

Functions

template<class HalfedgeDS_with_id >
void set_halfedgeds_items_id (HalfedgeDS_with_id &hds)
 Given a CGAL::Polyhedron_3 or more generally a model of HalfedgeDS, for each simplex type (vertex, halfedge, facet) associates an index from 0 to the number of simplices minus 1 to each simplex of hds. More...
 
template<typename Graph >
Iterator_range
< Halfedge_around_source_iterator
< Graph > > 
halfedges_around_source (typename boost::graph_traits< Graph >::halfedge_descriptor h, Graph &g)
 returns an iterator range over all halfedges with vertex source(h,g) as source.
 
template<typename Graph >
Iterator_range
< Halfedge_around_source_iterator
< Graph > > 
halfedges_around_source (typename boost::graph_traits< Graph >::vertex_descriptor v, Graph &g)
 returns an iterator range over all halfedges with vertex v as source.
 
template<typename Graph >
Iterator_range
< Halfedge_around_target_iterator
< Graph > > 
halfedges_around_target (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 returns an iterator range over all halfedges with vertex target(h,g) as target.
 
template<typename Graph >
Iterator_range
< Halfedge_around_target_iterator
< Graph > > 
halfedges_around_target (typename boost::graph_traits< Graph >::vertex_descriptor v, const Graph &g)
 returns an iterator range over all halfedges with vertex v as target.
 
template<typename Graph >
Iterator_range
< Halfedge_around_face_iterator
< Graph > > 
halfedges_around_face (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 returns an iterator range over all halfedges incident to the same face or border as h.
 
template<typename Graph >
Iterator_range
< Face_around_target_iterator
< Graph > > 
faces_around_target (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 returns an iterator range over all faces around vertex target(h,g).
 
template<typename Graph >
Iterator_range
< Face_around_face_iterator
< Graph > > 
faces_around_face (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 returns an iterator range over all edge-adjacent faces to the same face face(h,g).
 
template<typename Graph >
Iterator_range
< Opposite_edge_around_face_iterator
< Graph > > 
opposite_edges_around_face (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 
template<typename Graph >
Iterator_range
< Edge_around_face_iterator
< Graph > > 
edges_around_face (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 
template<typename Graph >
Iterator_range
< Vertex_around_target_iterator
< Graph > > 
adjacent_vertices (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 
template<typename Graph >
Iterator_range
< Vertex_around_target_iterator
< Graph > > 
adjacent_vertices (typename boost::graph_traits< Graph >::vertex_descriptor v, const Graph &g)
 
template<typename Graph >
Iterator_range
< Vertex_around_target_iterator
< Graph > > 
vertices_around_target (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 returns an iterator range over all vertices adjacent to the vertex target(h,g).
 
template<typename Graph >
Iterator_range
< Vertex_around_target_iterator
< Graph > > 
vertices_around_target (typename boost::graph_traits< Graph >::vertex_descriptor v, const Graph &g)
 
template<typename Graph >
Iterator_range
< Vertex_around_face_iterator
< Graph > > 
vertices_around_face (typename boost::graph_traits< Graph >::halfedge_descriptor h, const Graph &g)
 returns an iterator range over all vertices adjacent to the face face(h,g).
 
template<typename FaceGraph >
bool is_border (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true if the halfedge hd is on a border.
 
template<typename FaceGraph >
bool is_border_edge (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true if the halfedge hd or the opposite halfedge is on a border.
 
template<typename FaceGraph >
bool is_border (typename boost::graph_traits< FaceGraph >::edge_descriptor ed, const FaceGraph &g)
 returns true if the edge e is on a border.
 
template<typename FaceGraph >
boost::optional< typename
boost::graph_traits< FaceGraph >
::halfedge_descriptor > 
is_border (typename boost::graph_traits< FaceGraph >::vertex_descriptor vd, const FaceGraph &g)
 returns a halfedge which is on a border and whose target vertex is vd, if such a halfedge exists.
 
template<typename FaceGraph >
bool is_closed (const FaceGraph &g)
 returns true if there are no border edges.
 
template<typename FaceGraph >
bool is_bivalent (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true if the target of hd has exactly two incident edges.
 
template<typename FaceGraph >
bool is_bivalent_mesh (const FaceGraph &g)
 returns true if all vertices have exactly two incident edges.
 
template<typename FaceGraph >
bool is_trivalent (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true if the target of hd has exactly three incident edges.
 
template<typename FaceGraph >
bool is_trivalent_mesh (const FaceGraph &g)
 returns true if all vertices have exactly three incident edges.
 
template<typename FaceGraph >
bool is_isolated_triangle (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true iff the connected component denoted by hd is a triangle. More...
 
template<typename FaceGraph >
bool is_triangle (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true iff the face denoted by hd is a triangle, that is it has three incident halfedges.
 
template<typename FaceGraph >
bool is_triangle_mesh (const FaceGraph &g)
 returns true if all faces are triangles.
 
template<typename FaceGraph >
bool is_isolated_quad (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true iff the connected component denoted by hd is a quadrilateral.
 
template<typename FaceGraph >
bool is_quad (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true iff the face denoted by hd is a quad, that is it has four incident halfedges.
 
template<typename FaceGraph >
bool is_quad_mesh (const FaceGraph &g)
 returns true if all faces are quadrilaterals.
 
template<typename FaceGraph >
bool is_tetrahedron (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true iff the connected component denoted by hd is a tetrahedron.
 
template<typename FaceGraph >
bool is_valid_halfedge_descriptor (typename boost::graph_traits< FaceGraph >::halfedge_descriptor h, const FaceGraph &g)
 
template<typename FaceGraph >
bool is_valid_vertex_descriptor (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g)
 
template<typename FaceGraph >
bool is_valid_face_descriptor (typename boost::graph_traits< FaceGraph >::face_descriptor f, const FaceGraph &g)
 
template<typename FaceGraph >
bool is_valid_polygon_mesh (const FaceGraph &g)
 
template<typename FaceGraph >
bool is_hexahedron (typename boost::graph_traits< FaceGraph >::halfedge_descriptor hd, const FaceGraph &g)
 returns true iff the connected component denoted by hd is a hexahedron.
 
template<typename Graph , typename P >
boost::graph_traits< Graph >
::halfedge_descriptor 
make_triangle (const P &p0, const P &p1, const P &p2, Graph &g)
 Creates an isolated triangle with border edges in g having p0, p1, and p2 as points and adds it to the graph g. More...
 
template<typename Graph , typename P >
boost::graph_traits< Graph >
::halfedge_descriptor 
make_quad (const P &p0, const P &p1, const P &p2, const P &p3, Graph &g)
 Creates an isolated quad with border edges in g having p0, p1, p2, and p3 as points and adds it to the graph g. More...
 
template<typename Graph , typename P >
boost::graph_traits< Graph >
::halfedge_descriptor 
make_hexahedron (const P &p0, const P &p1, const P &p2, const P &p3, const P &p4, const P &p5, const P &p6, const P &p7, Graph &g)
 Creates an isolated hexahedron in g having p0, p1, ... , and p7 as points and adds it to the graph g. More...
 
template<typename Graph , typename P >
boost::graph_traits< Graph >
::halfedge_descriptor 
make_tetrahedron (const P &p0, const P &p1, const P &p2, const P &p3, Graph &g)
 Creates an isolated tetrahedron in g having p0, p1, p2, and p3 as points and adds it to the graph g. More...
 
template<typename FaceGraph >
void clear (FaceGraph &g)
 removes all vertices, faces and halfedges from a graph. More...
 
template<class FaceRange , class FaceGraph , class IsFaceSelectedPMap , class OutputIterator >
OutputIterator expand_face_selection (const FaceRange &selection, FaceGraph &fg, unsigned int k, IsFaceSelectedPMap is_selected, OutputIterator out)
 Augments a selection with faces of fg that are adjacent to a face in selection. More...
 
template<class FaceRange , class FaceGraph , class IsFaceSelectedPMap , class OutputIterator >
OutputIterator reduce_face_selection (const FaceRange &selection, FaceGraph &fg, unsigned int k, IsFaceSelectedPMap is_selected, OutputIterator out)
 Diminishes a selection of faces from faces adjacent to a non-selected face. More...
 
template<class HalfedgeRange , class FaceGraph , class OutputIterator >
OutputIterator select_incident_faces (const HalfedgeRange &hedges, FaceGraph &fg, OutputIterator out)
 discovers and puts in out all faces incident to the target vertex of a halfedge in hedges. More...
 
template<class EdgeRange , class HalfedgeGraph , class IsEdgeSelectedPMap , class OutputIterator >
OutputIterator expand_edge_selection (const EdgeRange &selection, HalfedgeGraph &fg, unsigned int k, IsEdgeSelectedPMap is_selected, OutputIterator out)
 Operations on edges. More...
 
template<class EdgeRange , class HalfedgeGraph , class IsEdgeSelectedPMap , class OutputIterator >
OutputIterator reduce_edge_selection (const EdgeRange &selection, HalfedgeGraph &fg, unsigned int k, IsEdgeSelectedPMap is_selected, OutputIterator out)
 Diminishes a selection of edges from edges adjacent to a non-selected edge. More...
 
template<class VertexRange , class HalfedgeGraph , class IsVertexSelectedPMap , class OutputIterator >
OutputIterator expand_vertex_selection (const VertexRange &selection, HalfedgeGraph &fg, unsigned int k, IsVertexSelectedPMap is_selected, OutputIterator out)
 Operations on vertices. More...
 
template<class VertexRange , class HalfedgeGraph , class IsVertexSelectedPMap , class OutputIterator >
OutputIterator reduce_vertex_selection (const VertexRange &selection, HalfedgeGraph &fg, unsigned int k, IsVertexSelectedPMap is_selected, OutputIterator out)
 Diminishes a selection of vertices from vertices adjacent to a non-selected vertex. More...
 
template<typename Graph , typename Visitor , typename IsTerminal >
void split_graph_into_polylines (const Graph &graph, Visitor &polyline_visitor, IsTerminal is_terminal)
 splits into polylines the graph g at vertices of degree greater than 2 and at vertices for which is_terminal(v,graph)==true. More...
 
template<typename Graph , typename Visitor , typename IsTerminal , typename LessForVertexDescriptors >
void split_graph_into_polylines (const Graph &graph, Visitor &polyline_visitor, IsTerminal is_terminal, LessForVertexDescriptors less)
 
template<typename SourceMesh , typename TargetMesh , typename V2V = Emptyset_iterator, typename H2H = Emptyset_iterator, typename F2F = Emptyset_iterator>
void copy_face_graph (const SourceMesh &sm, TargetMesh &tm, V2V v2v=V2V(), H2H h2h=H2H(), F2F f2f=F2F())
 copies a source model of FaceListGraph into a target model of a FaceListGraph. More...
 
template<typename P , typename Property >
boost::property_map< P,
Property >::type 
get (Property p, Dual< P > &dual)
 
template<typename P , typename Property >
boost::property_map< P,
Property >::const_type 
get (Property p, const Dual< P > &dual)
 
template<typename P , typename Property , typename Key >
boost::property_map_value< P,
Property >::type 
get (Property p, const Dual< P > &dual, const Key &k)
 
template<typename P , typename Key >
Property_map_value_dummy< Dual
< P >, boost::vertex_index_t,
Key >::type 
get (boost::vertex_index_t, const Dual< P > &dual, const Key &k)
 
template<typename P , typename Key >
Property_map_value_dummy< Dual
< P >, boost::face_index_t,
Key >::type 
get (boost::face_index_t, const Dual< P > &dual, const Key &k)
 
template<typename P , typename Property , typename Key , typename Value >
void put (Property p, const Dual< P > &dual, const Key &k, const Value &val)
 
template<typename P >
boost::internal::Dual_vertex_index_pmap
< P > 
get (boost::vertex_index_t, const Dual< P > &dual)
 
template<typename P >
boost::internal::Dual_face_index_pmap
< P > 
get (boost::face_index_t, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits
< CGAL::Dual< P >
>::vertices_size_type 
num_vertices (const CGAL::Dual< P > &dual)
 
template<typename P >
boost::graph_traits
< CGAL::Dual< P >
>::edges_size_type 
num_edges (const CGAL::Dual< P > &dual)
 
template<typename P >
boost::graph_traits
< CGAL::Dual< P >
>::halfedges_size_type 
num_halfedges (const CGAL::Dual< P > &dual)
 
template<typename P >
boost::graph_traits
< CGAL::Dual< P >
>::faces_size_type 
num_faces (const CGAL::Dual< P > &dual)
 
template<typename P >
Iterator_range< typename
boost::graph_traits< Dual< P >
>::vertex_iterator > 
vertices (const CGAL::Dual< P > &dual)
 
template<typename P >
Iterator_range< typename
boost::graph_traits< Dual< P >
>::face_iterator > 
faces (const CGAL::Dual< P > &dual)
 
template<typename P >
Iterator_range< typename
boost::graph_traits< Dual< P >
>::halfedge_iterator > 
halfedges (const CGAL::Dual< P > &dual)
 
template<typename P >
Iterator_range< typename
boost::graph_traits< Dual< P >
>::edge_iterator > 
edges (const CGAL::Dual< P > &dual)
 
template<typename P >
std::pair< typename
boost::graph_traits< Dual< P >
>::edge_descriptor, bool > 
edge (typename boost::graph_traits< Dual< P > >::vertex_descriptor u, typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::edge_descriptor 
edge (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::vertex_descriptor 
source (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::vertex_descriptor 
target (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::vertex_descriptor 
source (typename boost::graph_traits< Dual< P > >::edge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::vertex_descriptor 
target (typename boost::graph_traits< Dual< P > >::edge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::halfedge_descriptor 
halfedge (typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::halfedge_descriptor 
halfedge (typename boost::graph_traits< Dual< P > >::face_descriptor f, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::halfedge_descriptor 
halfedge (typename boost::graph_traits< Dual< P > >::edge_descriptor e, const Dual< P > &dual)
 
template<typename P >
std::pair< typename
boost::graph_traits< Dual< P >
>::halfedge_descriptor, bool > 
halfedge (typename boost::graph_traits< Dual< P > >::vertex_descriptor u, typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::face_descriptor 
face (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::halfedge_descriptor 
opposite (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::halfedge_descriptor 
next (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::halfedge_descriptor 
prev (typename boost::graph_traits< Dual< P > >::halfedge_descriptor h, const Dual< P > &dual)
 
template<typename P >
Iterator_range< typename
boost::graph_traits< Dual< P >
>::out_edge_iterator > 
out_edges (typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename P >
Iterator_range< typename
boost::graph_traits< Dual< P >
>::in_edge_iterator > 
in_edges (typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::degree_size_type 
out_degree (typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename P >
boost::graph_traits< Dual< P >
>::degree_size_type 
in_degree (typename boost::graph_traits< Dual< P > >::vertex_descriptor v, const Dual< P > &dual)
 
template<typename HalfedgeGraph , typename PositionMap , typename NormalMap >
void calculate_face_normals (const HalfedgeGraph &g, PositionMap pm, NormalMap nm)
 
template<typename HalfedgeGraph , typename Position , typename Normal , typename Boundary >
void calculate_vertex_normals (const HalfedgeGraph &g, Position position_map, Normal normal_map, Boundary boundary_map)
 
template<typename HalfedgeGraph >
Kernel_traits< typename
boost::property_traits
< typename boost::property_map
< HalfedgeGraph,
CGAL::vertex_point_t >
::const_type >::value_type >
::Kernel::Triangle_3 
triangle (const HalfedgeGraph &g, typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h)
 Convenience function that calls triangle() with the property map obtained by get(CGAL::vertex_point, g). More...
 
template<typename HalfedgeGraph , typename PositionMap >
Kernel_traits< typename
boost::property_traits
< PositionMap >::value_type >
::Kernel::Triangle_3 
triangle (const HalfedgeGraph &g, typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor h, const PositionMap &pm)
 triangle() returns a Triangle_3 constructed from the positions of the vertex_descriptors around the face incident to h in counter-clockwise direction. More...
 

Function Documentation

template<typename HalfedgeGraph >
Kernel_traits< typename boost::property_traits< typename boost::property_map< HalfedgeGraph, CGAL::vertex_point_t>::const_type >::value_type >::Kernel::Triangle_3 CGAL::triangle ( const HalfedgeGraph g,
typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h 
)

Convenience function that calls triangle() with the property map obtained by get(CGAL::vertex_point, g).

template<typename HalfedgeGraph , typename PositionMap >
Kernel_traits<typename boost::property_traits<PositionMap>::value_type>::Kernel::Triangle_3 CGAL::triangle ( const HalfedgeGraph g,
typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor  h,
const PositionMap &  pm 
)

triangle() returns a Triangle_3 constructed from the positions of the vertex_descriptors around the face incident to h in counter-clockwise direction.

The Kernel of the returned Triangle_3 is the same as the Kernel of the value_type of the.

Precondition
The face incident to h is triangular.
Template Parameters
PositionMapmust be a model of ReadablePropertyMap. Its value_type must be a model of Kernel::Point_3
HalfedgeGraphmust be a model of HalfedgeGraph.
Parameters
gThe graph
hThe halfedge
pmThe map used to find the vertices of the triangle.