CGAL 5.0.1 - CGAL and the Boost Graph Library
|
Generic convenience functions for testing if an edge is a border edge, if a mesh is triangular, for conversion between models of different FaceGraph
concepts, etc.
Most functions are in the header file <CGAL/boost/graph/helpers.h>
Functions | |
template<typename FaceGraph > | |
bool | CGAL::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 | CGAL::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 | CGAL::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 > | CGAL::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 | CGAL::is_closed (const FaceGraph &g) |
returns true if there are no border edges. | |
template<typename FaceGraph > | |
bool | CGAL::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 | CGAL::is_bivalent_mesh (const FaceGraph &g) |
returns true if all vertices have exactly two incident edges. | |
template<typename FaceGraph > | |
bool | CGAL::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 | CGAL::is_trivalent_mesh (const FaceGraph &g) |
returns true if all vertices have exactly three incident edges. | |
template<typename FaceGraph > | |
bool | CGAL::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 | CGAL::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 | CGAL::is_triangle_mesh (const FaceGraph &g) |
returns true if all faces are triangles. | |
template<typename FaceGraph > | |
bool | CGAL::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 | CGAL::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 | CGAL::is_quad_mesh (const FaceGraph &g) |
returns true if all faces are quadrilaterals. | |
template<typename FaceGraph > | |
bool | CGAL::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 Graph > | |
bool | CGAL::is_valid_halfedge_graph (const Graph &g, bool verb=false) |
checks the integrity of g . More... | |
template<typename Graph > | |
bool | CGAL::is_valid_face_graph (const Graph &g, bool verb=false) |
checks the integrity of g . More... | |
template<typename Mesh > | |
bool | CGAL::is_valid_polygon_mesh (const Mesh &g, bool verb=false) |
checks the integrity of g . More... | |
template<typename FaceGraph > | |
bool | CGAL::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 FaceGraph > | |
void | CGAL::clear (FaceGraph &g) |
removes all vertices, faces and halfedges from a graph. More... | |
template<typename FaceGraph > | |
bool | CGAL::is_empty (const FaceGraph &g) |
checks whether the graph is empty, by checking that it does not contain any vertex. More... | |
template<typename Graph > | |
int | CGAL::vertex_index_in_face (const typename boost::graph_traits< Graph >::vertex_descriptor vd, const typename boost::graph_traits< Graph >::face_descriptor fd, const Graph &g) |
returns the number of calls to next() one has to apply to the halfedge hd for source(hd, mesh) == vd to be true, starting from hd = halfedge(fd, tm) . More... | |
template<typename Graph > | |
int | CGAL::halfedge_index_in_face (typename boost::graph_traits< Graph >::halfedge_descriptor he, const Graph &g) |
returns the number of calls to next(hd, tm) one has to apply to hd for hd == he to be true, starting from hd = halfedge(face(he, tm), tm) . More... | |
template<typename Graph , typename P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_triangle (const P &p0, const P &p1, const P &p2, Graph &g) |
Creates an isolated triangle with its vertices initialized to p0 , p1 and p2 , and adds it to the graph g . More... | |
template<typename Graph , typename P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_quad (const P &p0, const P &p1, const P &p2, const P &p3, Graph &g) |
Creates an isolated quad with its vertices initialized to p0 , p1 , p2 , and p3 , and adds it to the graph g . More... | |
template<typename Graph , typename P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::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 with its vertices initialized to p0 , p1 , ... , and p7 , and adds it to the graph g . More... | |
template<typename Graph , typename P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_tetrahedron (const P &p0, const P &p1, const P &p2, const P &p3, Graph &g) |
Creates an isolated tetrahedron with its vertices initialized to p0 , p1 , p2 , and p3 , and adds it to the graph g . More... | |
template<class Graph , class P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_regular_prism (typename boost::graph_traits< Graph >::vertices_size_type nb_vertices, Graph &g, const P &base_center=P(0, 0, 0), typename CGAL::Kernel_traits< P >::Kernel::FT height=1.0, typename CGAL::Kernel_traits< P >::Kernel::FT radius=1.0, bool is_closed=true) |
Creates a triangulated regular prism, outward oriented, having nb_vertices vertices in each of its bases and adds it to the graph g . More... | |
template<class Graph , class P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_pyramid (typename boost::graph_traits< Graph >::vertices_size_type nb_vertices, Graph &g, const P &base_center=P(0, 0, 0), typename CGAL::Kernel_traits< P >::Kernel::FT height=1.0, typename CGAL::Kernel_traits< P >::Kernel::FT radius=1.0, bool is_closed=true) |
Creates a pyramid, outward oriented, having nb_vertices vertices in its base and adds it to the graph g . More... | |
template<class Graph , class P > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_icosahedron (Graph &g, const P ¢er=P(0, 0, 0), typename CGAL::Kernel_traits< P >::Kernel::FT radius=1.0) |
Creates an icosahedron, outward oriented, centered in center and adds it to the graph g . More... | |
template<class Graph , class CoordinateFunctor > | |
boost::graph_traits< Graph >::halfedge_descriptor | CGAL::make_grid (typename boost::graph_traits< Graph >::vertices_size_type i, typename boost::graph_traits< Graph >::vertices_size_type j, Graph &g, const CoordinateFunctor &calculator, bool triangulated=false) |
Creates a row major ordered grid with i cells along the width and j cells along the height and adds it to the graph g . More... | |
template<typename SourceMesh , typename TargetMesh , typename NamedParameters1 , typename NamedParameters2 > | |
void | CGAL::copy_face_graph (const SourceMesh &sm, TargetMesh &tm, const NamedParameters1 &np1, const NamedParameters2 &np2) |
copies a source model of FaceListGraph into a target model of a FaceListGraph . More... | |
void CGAL::clear | ( | FaceGraph & | g | ) |
#include <CGAL/boost/graph/helpers.h>
removes all vertices, faces and halfedges from a graph.
Calls remove_edge()
, remove_vertex()
, and remove_face()
for each edge, vertex or face.
If the graph has a member function clear()
, it will be called instead.
FaceGraph | model of MutableHalfedgeGraph and MutableFaceGraph |
g | the graph to clear |
void CGAL::copy_face_graph | ( | const SourceMesh & | sm, |
TargetMesh & | tm, | ||
const NamedParameters1 & | np1, | ||
const NamedParameters2 & | np2 | ||
) |
#include <CGAL/boost/graph/copy_face_graph.h>
copies a source model of FaceListGraph
into a target model of a FaceListGraph
.
OutputIterators
can be provided to produce a mapping between source and target elements. The target graph is not cleared.
SourceMesh | a model of FaceListGraph . The descriptor types boost::graph_traits<SourceMesh>::vertex_descriptor and boost::graph_traits<SourceMesh>::face_descriptor must be models of Hashable . |
TargetMesh | a model of FaceListGraph |
NamedParameters1 | a sequence of Named Parameters |
NamedParameters2 | a sequence of Named Parameters |
The types sm_vertex_descriptor
and sm_face_descriptor
must be models of the concept Hashable
.
sm | the source mesh |
tm | the target mesh |
np1 | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | the property map with the points associated to the vertices of sm . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in SourceMesh |
vertex_to_vertex_output_iterator | an OutputIterator containing the pairs source-vertex, target-vertex. If this parameter is given, then vertex_to_vertex_map cannot be used. |
halfedge_to_halfedge_output_iterator | an OutputIterator containing the pairs source-halfedge, target-halfedge. If this parameter is given, then halfedge_to_halfedge_map cannot be used. |
face_to_face_output_iterator | an OutputIterator containing the pairs source-face, target-face. If this parameter is given, then face_to_face_map cannot be used. |
vertex_to_vertex_map | a ReadWritePropertyMap containing the pairs source-vertex, target-vertex. |
halfedge_to_halfedge_map | a ReadWritePropertyMap containing the pairs source-halfedge, target-halfedge. |
face_to_face_map | a ReadWritePropertyMap containing the pairs source-face, target-face. |
np2 | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | the property map with the points associated to the vertices of tm . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TargetMesh |
The points from sm
to tm
are converted using CGAL::Cartesian_converter<SourceKernel, TargetKernel>
. SourceKernel
and TargetKernel
are deduced using CGAL::Kernel_traits
from the value types of the vertex_point_maps.
Other properties are not copied.
int CGAL::halfedge_index_in_face | ( | typename boost::graph_traits< Graph >::halfedge_descriptor | he, |
const Graph & | g | ||
) |
#include <CGAL/boost/graph/helpers.h>
returns the number of calls to next(hd, tm)
one has to apply to hd
for hd == he
to be true, starting from hd = halfedge(face(he, tm), tm)
.
Graph | a model of FaceGraph . |
he | a halfedge of g whose index in face(he, tm) is sought |
g | an object of type Graph |
bool CGAL::is_empty | ( | const FaceGraph & | g | ) |
bool CGAL::is_isolated_triangle | ( | typename boost::graph_traits< FaceGraph >::halfedge_descriptor | hd, |
const FaceGraph & | g | ||
) |
#include <CGAL/boost/graph/helpers.h>
returns true
iff the connected component denoted by hd
is a triangle.
g
must be valid. bool CGAL::is_valid_face_graph | ( | const Graph & | g, |
bool | verb = false |
||
) |
#include <CGAL/boost/graph/helpers.h>
checks the integrity of g
.
g
is valid if it is a valid HalfedgeListGraph
, if it follows the rules of the FaceListGraph
concept, and all of its associations are reciprocal. For example, face(halfedge(f,g),g)
must be f
. calls is_valid_halfedge_graph()
g | the Graph to test. |
verb | : if true , the details of the check will be written in the standard output. |
<tt>Graph</tt> | a model of FaceListGraph |
true
if g
is valid, false
otherwise.is_valid_halfedge_graph()
bool CGAL::is_valid_halfedge_graph | ( | const Graph & | g, |
bool | verb = false |
||
) |
#include <CGAL/boost/graph/helpers.h>
checks the integrity of g
.
g
is valid if it follows the rules of the HalfedgeListGraph
concept, and all of its associations are reciprocal. For example, prev(next(h, g), g)
must be h
, and next(prev(h, g), g)
must be h
.
g | the Graph to test. |
verb | : if true , the details of the check will be written in the standard output. |
<tt>Graph</tt> | a model of HalfedgeListGraph |
true
if g
is valid, false
otherwise. bool CGAL::is_valid_polygon_mesh | ( | const Mesh & | g, |
bool | verb = false |
||
) |
#include <CGAL/boost/graph/helpers.h>
checks the integrity of g
.
g
is valid if it is a valid FaceListGraph
and it has distinct faces on each side of an edge. calls is_valid_face_graph()
.
g | the Mesh to test. |
verb | : if true , the details of the check will be written in the standard output. |
Mesh | a model of FaceListGraph and HalfedgeListGraph , and follows the definition of a PolygonMesh |
true
if g
is valid, false
otherwise.boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_grid | ( | typename boost::graph_traits< Graph >::vertices_size_type | i, |
typename boost::graph_traits< Graph >::vertices_size_type | j, | ||
Graph & | g, | ||
const CoordinateFunctor & | calculator, | ||
bool | triangulated = false |
||
) |
#include <CGAL/boost/graph/generators.h>
Creates a row major ordered grid with i
cells along the width and j
cells along the height and adds it to the graph g
.
An internal property map for CGAL::vertex_point_t
must be available in Graph
.
i | the number of cells along the width. |
j | the number of cells along the height. |
g | the graph in which the grid will be created. |
calculator | the functor that will assign coordinates to the grid vertices. |
triangulated | decides if a cell is composed of one quad or two triangles. If triangulated is true , the diagonal of each cell is oriented from (0,0) to (1,1) in the cell coordinates. |
CoordinateFunctor | a function object providing: Point_3 operator()(size_type I, size_type J) , with Point_3 being the value_type of the internal property_map for CGAL::vertex_point_t and outputs an object of type boost::property_traits<boost::property_map<Graph,CGAL::vertex_point_t>::type>::value_type . It will be called with arguments (w , h ), with w in [0..i ] and h in [0..j ].Default: a point with positive integer coordinates ( w , h , 0), with w in [0..i ] and h in [0..j ] |
boost::graph_traits<Graph>::halfedge_descriptor CGAL::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 | ||
) |
#include <CGAL/boost/graph/generators.h>
Creates an isolated hexahedron with its vertices initialized to p0
, p1
, ... , and p7
, and adds it to the graph g
.
p0
, in the face with the vertices with the points p0
, p1
, p2
, and p3
. boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_icosahedron | ( | Graph & | g, |
const P & | center = P(0,0,0) , |
||
typename CGAL::Kernel_traits< P >::Kernel::FT | radius = 1.0 |
||
) |
#include <CGAL/boost/graph/generators.h>
Creates an icosahedron, outward oriented, centered in center
and adds it to the graph g
.
g | the graph in which the icosahedron will be created. |
center | the center of the sphere in which the icosahedron is inscribed. |
radius | the radius of the sphere in which the icosahedron is inscribed. |
boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_pyramid | ( | typename boost::graph_traits< Graph >::vertices_size_type | nb_vertices, |
Graph & | g, | ||
const P & | base_center = P(0,0,0) , |
||
typename CGAL::Kernel_traits< P >::Kernel::FT | height = 1.0 , |
||
typename CGAL::Kernel_traits< P >::Kernel::FT | radius = 1.0 , |
||
bool | is_closed = true |
||
) |
#include <CGAL/boost/graph/generators.h>
Creates a pyramid, outward oriented, having nb_vertices
vertices in its base and adds it to the graph g
.
If center
is (0, 0, 0)
, then the first point of the base is (radius, 0, 0)
nb_vertices | the number of vertices in the base. It must be greater than or equal to 3. |
g | the graph in which the pyramid will be created |
base_center | the center of the circle in which the base is inscribed. |
height | the distance between the base and the apex. |
radius | the radius of the circle in which the base is inscribed. |
is_closed | determines if the base must be created or not. If is_closed is true , center is a vertex. |
boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_quad | ( | const P & | p0, |
const P & | p1, | ||
const P & | p2, | ||
const P & | p3, | ||
Graph & | g | ||
) |
#include <CGAL/boost/graph/generators.h>
Creates an isolated quad with its vertices initialized to p0
, p1
, p2
, and p3
, and adds it to the graph g
.
p0
. boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_regular_prism | ( | typename boost::graph_traits< Graph >::vertices_size_type | nb_vertices, |
Graph & | g, | ||
const P & | base_center = P(0,0,0) , |
||
typename CGAL::Kernel_traits< P >::Kernel::FT | height = 1.0 , |
||
typename CGAL::Kernel_traits< P >::Kernel::FT | radius = 1.0 , |
||
bool | is_closed = true |
||
) |
#include <CGAL/boost/graph/generators.h>
Creates a triangulated regular prism, outward oriented, having nb_vertices
vertices in each of its bases and adds it to the graph g
.
If center
is (0, 0, 0), then the first point of the prism is (radius
, height
, 0)
nb_vertices | the number of vertices per base. It must be greater than or equal to 3. |
g | the graph in which the regular prism will be created. |
base_center | the center of the circle in which the lower base is inscribed. |
height | the distance between the two bases. |
radius | the radius of the circles in which the bases are inscribed. |
is_closed | determines if the bases must be created or not. If is_closed is true , center is a vertex. |
boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_tetrahedron | ( | const P & | p0, |
const P & | p1, | ||
const P & | p2, | ||
const P & | p3, | ||
Graph & | g | ||
) |
#include <CGAL/boost/graph/generators.h>
Creates an isolated tetrahedron with its vertices initialized to p0
, p1
, p2
, and p3
, and adds it to the graph g
.
p0
, in the face with the vertices with the points p0
, p1
, and p2
. boost::graph_traits<Graph>::halfedge_descriptor CGAL::make_triangle | ( | const P & | p0, |
const P & | p1, | ||
const P & | p2, | ||
Graph & | g | ||
) |
#include <CGAL/boost/graph/generators.h>
Creates an isolated triangle with its vertices initialized to p0
, p1
and p2
, and adds it to the graph g
.
p0
. int CGAL::vertex_index_in_face | ( | const typename boost::graph_traits< Graph >::vertex_descriptor | vd, |
const typename boost::graph_traits< Graph >::face_descriptor | fd, | ||
const Graph & | g | ||
) |
#include <CGAL/boost/graph/helpers.h>
returns the number of calls to next()
one has to apply to the halfedge hd
for source(hd, mesh) == vd
to be true, starting from hd = halfedge(fd, tm)
.
Graph | a model of FaceGraph |
vd | a vertex of g whose index is sought |
fd | a face of g in which the index of vd is sought |
g | a mesh of type Graph |
vd
is a vertex of fd
.