CGAL 5.3  Surface Mesh Topology

#include <CGAL/Path_on_surface.h>
The class Path_on_surface
represents a walk in a mesh which is either a model of CombinatorialMap
, a model of GeneralizedMap
or a model of a FaceGraph
.
Each object of this class is constructed from an external mesh on which the path should lie. A path is represented as a sequence of darts or halfedges, each one representing an oriented edge in the path. The class Path_on_surface
behaves as a container for this sequence of darts/halfedges. Elements are added in the path one at a time to the path thanks to the push_back()
method.
Mesh  a model of CombinatorialMap , GeneralizedMap or of FaceGraph 
Public Types  
typedef unspecified_type  halfedge_descriptor 
A handle to Dart for combinatorial/generalized maps, or a halfedge descriptor for models of the FaceGraph concept.  
Public Member Functions  
Path_on_surface (const Mesh &amesh)  
creates an empty path object which lies on amesh .  
bool  is_empty () const 
returns true iff this path is empty  
bool  is_closed () const 
returns true iff this path is closed.  
bool  is_simple () const 
returns true iff this path does not pass twice through a same edge or a same vertex.  
std::size_t  length () const 
returns the length of the path, i.e. its number of edges.  
halfedge_descriptor  operator[] (std::size_t i) const 
returns the ith dart of the path. More...  
void  clear () 
clears this path.  
bool  can_be_pushed (halfedge_descriptor hd, bool flip=false) const 
returns true iff hd can be added at the end of this path. If flip is true, the direction of hd is reversed before checking  
void  push_back (halfedge_descriptor hd, bool flip=false) 
adds hd at the end of this path. More...  
bool  can_be_pushed_by_index (std::size_t i) const 
returns true iff the dart/halfedge with index i can be added at the end of this path. More...  
void  push_back_by_index (std::size_t i) 
adds the dart/halfedge with index i at the end of this path. More...  
void  push_back_by_index (std::initializer_list< std::size_t > l) 
adds successively all dart/halfedges in l (a sequence of indices), at the end of the path. More...  
void  extend_positive_turn (std::size_t nb) 
adds the dart/halfedge obtained by turning nb times around the target vertex of the last dart/halfedge in this path, in the positive circular order. More...  
void  extend_negative_turn (std::size_t nb) 
adds the dart/halfedge obtained by turning nb times around the target vertex of the last dart/halfedge in this path, in the negative circular order. More...  
bool  can_be_pushed_by_label (const std::string &l) const 
returns true iff the dart/halfedge with label l can be added at the end of this path. More...  
void  push_back_by_label (const std::string &s) 
adds successively all darts/halfedges in s (a sequence of labels separated by spaces) at the end of this path. More...  
Self &  operator+= (const Self &other) 
concatenates other to this path. More...  
void  reverse () 
reverses this path (i.e. negates its orientation).  
void  generate_random_path (std::size_t length, Random &random=get_default_random()) 
creates a random open path with length darts/halfedges.  
void  generate_random_closed_path (std::size_t length, Random &random=get_default_random()) 
creates a random closed path with at least length darts/halfedges.  
bool CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::can_be_pushed_by_index  (  std::size_t  i  )  const 
returns true
iff the dart/halfedge with index i
can be added at the end of this path.
If Mesh is a Polyhedron_3
, takes time proportional to the number of darts/halfedges.
bool CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::can_be_pushed_by_label  (  const std::string &  l  )  const 
returns true
iff the dart/halfedge with label l
can be added at the end of this path.
PolygonalSchema
concept. void CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::extend_negative_turn  (  std::size_t  nb  ) 
adds the dart/halfedge obtained by turning nb
times around the target vertex of the last dart/halfedge in this path, in the negative circular order.
To extend with a negative 1 turn thus amounts to extend with the composite pointer: opposite(prev(opposite()))
.
is_empty()
void CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::extend_positive_turn  (  std::size_t  nb  ) 
adds the dart/halfedge obtained by turning nb
times around the target vertex of the last dart/halfedge in this path, in the positive circular order.
To extend with a positive 1 turn thus amounts to extend with the next()
pointer. (A zero turn corresponds to the opposite()
pointer.)
is_empty()
Self& CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::operator+=  (  const Self &  other  ) 
concatenates other
to this path.
other
. halfedge_descriptor CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::operator[]  (  std::size_t  i  )  const 
returns the ith dart of the path.
length()
. void CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::push_back  (  halfedge_descriptor  hd, 
bool  flip = false 

) 
adds hd
at the end of this path.
If flip
is true, the opposite of hd
is considered.
can_be_pushed(hd)
void CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::push_back_by_index  (  std::size_t  i  ) 
adds the dart/halfedge with index i
at the end of this path.
If Mesh is a Polyhedron_3
, takes time proportional to the number of halfedges.
can_be_pushed_by_index(i)
void CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::push_back_by_index  (  std::initializer_list< std::size_t >  l  ) 
adds successively all dart/halfedges in l
(a sequence of indices), at the end of the path.
If Mesh is a Polyhedron_3
, takes time proportional to the number of halfedges. For each index i
, can_be_pushed_by_index(i)
should be true.
void CGAL::Surface_mesh_topology::Path_on_surface< Mesh >::push_back_by_label  (  const std::string &  s  ) 
adds successively all darts/halfedges in s
(a sequence of labels separated by spaces) at the end of this path.
For each label, l, can_be_pushed_by_label(l)
should be true.
PolygonalSchema
concept.