\( \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.8 - CGAL and the Boost Graph Library

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Namespaces | Classes | Functions
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 | 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

## 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 < 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 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

  PositionMap | must be a model of ReadablePropertyMap. Its value_type must be a model of `Kernel::Point_3`
  HalfedgeGraph | must be a model of HalfedgeGraph.

Parameters

  g | The graph
  h | The halfedge
  pm | The map used to find the vertices of the triangle.