CGAL 5.0 - Polygon Mesh Processing
|
Functions to repair polygon soups and polygon meshes.
Functions | |
template<class PolygonMesh , class NamedParameter > | |
void | CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycle (typename boost::graph_traits< PolygonMesh >::halfedge_descriptor h, PolygonMesh &pm, const NamedParameter &np) |
merges identical vertices around a cycle of boundary edges. More... | |
template<class PolygonMesh , class NamedParameter > | |
void | CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycles (PolygonMesh &pm, const NamedParameter &np) |
extracts boundary cycles and merges the duplicated vertices of each cycle. More... | |
template<class PolygonRange > | |
bool | CGAL::Polygon_mesh_processing::is_polygon_soup_a_polygon_mesh (const PolygonRange &polygons) |
returns true if the soup of polygons defines a valid polygon mesh that can be handled by CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh() . More... | |
template<class PolygonMesh , class PointRange , class PolygonRange > | |
void | CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh (const PointRange &points, const PolygonRange &polygons, PolygonMesh &out) |
builds a polygon mesh from a soup of polygons. More... | |
template<class EdgeRange , class TriangleMesh , class OutputIterator , class NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_edges (const EdgeRange &edges, const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
collects the degenerate edges within a given range of edges. More... | |
template<class TriangleMesh , class OutputIterator , class NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_edges (const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
calls the function degenerate_edges() with the range: edges(tm) . More... | |
template<class FaceRange , class TriangleMesh , class OutputIterator , class NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_faces (const FaceRange &faces, const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
collects the degenerate faces within a given range of faces. More... | |
template<class TriangleMesh , class OutputIterator , class NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_faces (const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
calls the function degenerate_faces() with the range: faces(tm) . More... | |
template<typename PolygonMesh > | |
bool | CGAL::Polygon_mesh_processing::is_non_manifold_vertex (typename boost::graph_traits< PolygonMesh >::vertex_descriptor v, const PolygonMesh &pm) |
checks whether a vertex of a polygon mesh is non-manifold. More... | |
template<typename PolygonMesh , typename OutputIterator > | |
OutputIterator | CGAL::Polygon_mesh_processing::non_manifold_vertices (const PolygonMesh &pm, OutputIterator out) |
collects the non-manifold vertices (if any) present in the mesh. More... | |
template<typename PolygonMesh , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::duplicate_non_manifold_vertices (PolygonMesh &pm, const NamedParameters &np) |
duplicates all the non-manifold vertices of the input mesh. More... | |
template<class PolygonMesh > | |
std::size_t | CGAL::Polygon_mesh_processing::remove_isolated_vertices (PolygonMesh &pmesh) |
removes the isolated vertices from any polygon mesh. More... | |
template<typename PointRange , typename PolygonRange > | |
std::size_t | CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup (PointRange &points, PolygonRange &polygons) |
Removes the isolated points from a polygon soup. More... | |
template<typename PointRange , typename PolygonRange , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soup (PointRange &points, PolygonRange &polygons, const NamedParameters &np) |
Merges the duplicate points in a polygon soup. More... | |
template<typename PointRange , typename PolygonRange , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soup (const PointRange &points, PolygonRange &polygons, const NamedParameters &np) |
Merges the duplicate polygons in a polygon soup. More... | |
template<typename PointRange , typename PolygonRange , typename NamedParameters > | |
void | CGAL::Polygon_mesh_processing::repair_polygon_soup (PointRange &points, PolygonRange &polygons, const NamedParameters &np) |
Cleans a given polygon soup through various repairing operations. More... | |
template<typename PolygonMesh , typename NamedParameters > | |
bool | CGAL::Polygon_mesh_processing::is_degenerate_edge (typename boost::graph_traits< PolygonMesh >::edge_descriptor e, const PolygonMesh &pm, const NamedParameters &np) |
checks whether an edge is degenerate. More... | |
template<typename TriangleMesh , typename NamedParameters > | |
bool | CGAL::Polygon_mesh_processing::is_degenerate_triangle_face (typename boost::graph_traits< TriangleMesh >::face_descriptor f, const TriangleMesh &tm, const NamedParameters &np) |
checks whether a triangle face is degenerate. More... | |
template<typename TriangleMesh , typename NamedParameters > | |
boost::graph_traits< TriangleMesh >::halfedge_descriptor | CGAL::Polygon_mesh_processing::is_needle_triangle_face (typename boost::graph_traits< TriangleMesh >::face_descriptor f, const TriangleMesh &tm, const double threshold, const NamedParameters &np) |
checks whether a triangle face is needle. More... | |
template<typename TriangleMesh , typename NamedParameters > | |
boost::graph_traits< TriangleMesh >::halfedge_descriptor | CGAL::Polygon_mesh_processing::is_cap_triangle_face (typename boost::graph_traits< TriangleMesh >::face_descriptor f, const TriangleMesh &tm, const double threshold, const NamedParameters &np) |
checks whether a triangle face is a cap. More... | |
template<typename PolygonMesh , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::stitch_boundary_cycle (const typename boost::graph_traits< PolygonMesh >::halfedge_descriptor h, PolygonMesh &pm, const NamedParameters &np) |
Stitches together, whenever possible, two halfedges belonging to the boundary cycle described by the halfedge h . More... | |
template<typename PolygonMesh , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::stitch_boundary_cycles (PolygonMesh &pm, const NamedParameters &np) |
Stitches together, whenever possible, two halfedges belonging to the same boundary cycle. More... | |
template<typename PolygonMesh , typename HalfedgePairsRange > | |
void | CGAL::Polygon_mesh_processing::stitch_borders (PolygonMesh &pmesh, const HalfedgePairsRange &hedge_pairs_to_stitch) |
Stitches together border halfedges in a polygon mesh. More... | |
template<typename PolygonMesh , class NamedParameters > | |
void | CGAL::Polygon_mesh_processing::stitch_borders (PolygonMesh &pmesh, const NamedParameters &np) |
Same as the other overload but the pairs of halfedges to be stitched are automatically found amongst all border halfedges. More... | |
OutputIterator CGAL::Polygon_mesh_processing::degenerate_edges | ( | const EdgeRange & | edges, |
const TriangleMesh & | tm, | ||
OutputIterator | out, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
collects the degenerate edges within a given range of edges.
EdgeRange | a model of Range with value type boost::graph_traits<TriangleMesh>::edge_descriptor |
TriangleMesh | a model of HalfedgeGraph |
NamedParameters | a sequence of Named Parameters |
edges | a subset of edges of tm |
tm | a triangle mesh |
out | an output iterator in which the degenerate edges are written |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of tm . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh |
geom_traits | a geometric traits class instance. The traits class must provide the nested type Point_3 , and the nested functor Equal_3 to check whether two points are identical. |
OutputIterator CGAL::Polygon_mesh_processing::degenerate_edges | ( | const TriangleMesh & | tm, |
OutputIterator | out, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
calls the function degenerate_edges()
with the range: edges(tm)
.
See above for the comprehensive description of the parameters.
OutputIterator CGAL::Polygon_mesh_processing::degenerate_faces | ( | const FaceRange & | faces, |
const TriangleMesh & | tm, | ||
OutputIterator | out, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
collects the degenerate faces within a given range of faces.
FaceRange | a model of Range with value type boost::graph_traits<TriangleMesh>::face_descriptor |
TriangleMesh | a model of FaceGraph |
NamedParameters | a sequence of Named Parameters |
faces | a subset of faces of tm |
tm | a triangle mesh |
out | an output iterator in which the degenerate faces are put |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of tm . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh |
geom_traits | a geometric traits class instance. The traits class must provide the nested functor Collinear_3 to check whether three points are collinear. |
OutputIterator CGAL::Polygon_mesh_processing::degenerate_faces | ( | const TriangleMesh & | tm, |
OutputIterator | out, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
calls the function degenerate_faces()
with the range: faces(tm)
.
See above for the comprehensive description of the parameters.
std::size_t CGAL::Polygon_mesh_processing::duplicate_non_manifold_vertices | ( | PolygonMesh & | pm, |
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
duplicates all the non-manifold vertices of the input mesh.
PolygonMesh | a model of HalfedgeListGraph and MutableHalfedgeGraph |
NamedParameters | a sequence of Named Parameters |
pm | the surface mesh to be repaired |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of pmesh . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh |
vertex_is_constrained_map | a writable property map with vertex_descriptor as key and bool as value_type . put(pmap, v, true) will be called for each duplicated vertices, as well as the original non-manifold vertex in the input mesh. |
output_iterator | a model of OutputIterator with value type std::vector<vertex_descriptor> . The first vertex of each vector is a non-manifold vertex of the input mesh, followed by the new vertices that were created to fix this precise non-manifold configuration. |
boost::graph_traits<TriangleMesh>::halfedge_descriptor CGAL::Polygon_mesh_processing::is_cap_triangle_face | ( | typename boost::graph_traits< TriangleMesh >::face_descriptor | f, |
const TriangleMesh & | tm, | ||
const double | threshold, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/shape_predicates.h>
checks whether a triangle face is a cap.
A triangle is said to be a cap if one of the its angles is close to 180
degrees.
TriangleMesh | a model of FaceGraph |
NamedParameters | a sequence of Named Parameters |
f | a triangle face of tm |
tm | triangle mesh containing f |
threshold | the cosine of a minimum angle such that if f has an angle greater than this bound, it is a cap. The threshold is in range [-1 0] and corresponds to an angle between 90 and 180 degrees. |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of tm . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh |
geom_traits | a geometric traits class instance. The traits class must provide the nested type Point_3 and the nested functors Compute_squared_distance_3 , Construct_vector_3 , and Compute_scalar_product_3 . |
bool CGAL::Polygon_mesh_processing::is_degenerate_edge | ( | typename boost::graph_traits< PolygonMesh >::edge_descriptor | e, |
const PolygonMesh & | pm, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/shape_predicates.h>
checks whether an edge is degenerate.
An edge is considered degenerate if the geometric positions of its two extremities are identical.
PolygonMesh | a model of HalfedgeGraph |
NamedParameters | a sequence of Named Parameters |
e | an edge of pm |
pm | polygon mesh containing e |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of pm . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh |
geom_traits | a geometric traits class instance. The traits class must provide the nested type Point_3 , and the nested functor Equal_3 to check whether two points are identical. |
degenerate_edges()
true
if the edge e
is degenerate, false
otherwise. bool CGAL::Polygon_mesh_processing::is_degenerate_triangle_face | ( | typename boost::graph_traits< TriangleMesh >::face_descriptor | f, |
const TriangleMesh & | tm, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/shape_predicates.h>
checks whether a triangle face is degenerate.
A triangle face is considered degenerate if the geometric positions of its vertices are collinear.
TriangleMesh | a model of FaceGraph |
NamedParameters | a sequence of Named Parameters |
f | a triangle face of tm |
tm | a triangle mesh containing f |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of tm . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh |
geom_traits | a geometric traits class instance. The traits class must provide the nested functor Collinear_3 to check whether three points are collinear. |
degenerate_faces()
true
if the face f
is degenerate, false
otherwise. boost::graph_traits<TriangleMesh>::halfedge_descriptor CGAL::Polygon_mesh_processing::is_needle_triangle_face | ( | typename boost::graph_traits< TriangleMesh >::face_descriptor | f, |
const TriangleMesh & | tm, | ||
const double | threshold, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/shape_predicates.h>
checks whether a triangle face is needle.
A triangle is said to be a needle if its longest edge is much longer than its shortest edge.
TriangleMesh | a model of FaceGraph |
NamedParameters | a sequence of Named Parameters |
f | a triangle face of tm |
tm | triangle mesh containing f |
threshold | a bound on the ratio of the longest edge length and the shortest edge length |
np | optional Named Parameters described below |
vertex_point_map | the property map with the points associated to the vertices of tm . The type of this map is model of ReadWritePropertyMap . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in TriangleMesh |
geom_traits | a geometric traits class instance. The traits class must provide the nested type FT and the nested functor Compute_squared_distance_3 . |
bool CGAL::Polygon_mesh_processing::is_non_manifold_vertex | ( | typename boost::graph_traits< PolygonMesh >::vertex_descriptor | v, |
const PolygonMesh & | pm | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
checks whether a vertex of a polygon mesh is non-manifold.
PolygonMesh | a model of HalfedgeListGraph |
v | a vertex of pm |
pm | a triangle mesh containing v |
true
if the vertex is non-manifold, false
otherwise. bool CGAL::Polygon_mesh_processing::is_polygon_soup_a_polygon_mesh | ( | const PolygonRange & | polygons | ) |
#include <CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h>
returns true
if the soup of polygons defines a valid polygon mesh that can be handled by CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh()
.
It checks that each edge has at most two incident faces and such an edge is visited in opposite direction along the two face boundaries, no polygon has twice the same vertex, and the polygon soup describes a manifold surface. This function does not require a range of points as an argument since the check is purely topological. To each vertex of the mesh is associated an index that is used in the description of the boundaries of the polygons provided in polygons
.
PolygonRange | a model of the concept RandomAccessContainer whose value_type is a model of the concept RandomAccessContainer whose value_type is std::size_t . |
polygons | each element in the range describes a polygon using the indices of the vertices. |
orient_polygon_soup()
std::size_t CGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soup | ( | PointRange & | points, |
PolygonRange & | polygons, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair_polygon_soup.h>
Merges the duplicate points in a polygon soup.
Note that the index of a point that is merged with another point will thus change in all the polygons that the point appears in.
PointRange | a model of the concepts SequenceContainer and Swappable whose value type is the point type. |
PolygonRange | a model of the concept RandomAccessContainer whose value_type is itself a model of the concept RandomAccessContainer whose value_type is std::size_t . |
NamedParameters | a sequence of Named Parameters |
points | points of the soup of polygons. |
polygons | a vector of polygons. Each element in the vector describes a polygon using the indices of the points in points . |
np | optional Named Parameters described below |
geom_traits | a geometric traits class instance. The traits class must provide the nested functor Less_xyz_3 to compare lexicographically two points a function Less_xyz_3 less_xyz_3_object() . |
std::size_t CGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soup | ( | const PointRange & | points, |
PolygonRange & | polygons, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair_polygon_soup.h>
Merges the duplicate polygons in a polygon soup.
Two polygons are duplicate if they share the same vertices in the same order. Note that the first vertex of the polygon does not matter, that is the triangle 0,1,2
is a duplicate of the triangle 2,0,1
.
PointRange | a model of the concept RandomAccessContainer whose value type is the point type. |
PolygonRange | a model of the concept SequenceContainer whose value_type is itself a model of the concepts RandomAccessContainer and ReversibleContainer whose value_type is std::size_t . |
NamedParameters | a sequence of Named Parameters |
points | points of the soup of polygons. |
polygons | a vector of polygons. Each element in the vector describes a polygon using the indices of the points in points . |
np | optional Named Parameters, amongst those described below |
geom_traits | a geometric traits class instance. The traits class must provide the nested functor Less_xyz_3 to compare lexicographically two points a function Less_xyz_3 less_xyz_3_object() . |
erase_all_duplicates | Parameter to indicate, when multiple polygons are duplicates, whether all the duplicate polygons should be removed or if one (arbitrarily chosen) face should be kept. Default is false . |
require_same_orientation | Parameter to indicate if polygon orientation should be taken into account when determining whether two polygons are duplicates, that is, whether e.g. the triangles 0,1,2 and 0,2,1 are duplicates. Default is false . |
void CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycle | ( | typename boost::graph_traits< PolygonMesh >::halfedge_descriptor | h, |
PolygonMesh & | pm, | ||
const NamedParameter & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/merge_border_vertices.h>
merges identical vertices around a cycle of boundary edges.
PolygonMesh | a model of FaceListGraph and MutableFaceGraph . |
NamedParameter | a sequence of Named Parameters. |
h | a halfedge that belongs to a boundary cycle. |
pm | the polygon mesh which contains the boundary cycle. |
np | optional parameter of Named Parameters listed below. |
vertex_point_map | the property map with the points associated to the vertices of pm . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh |
void CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycles | ( | PolygonMesh & | pm, |
const NamedParameter & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/merge_border_vertices.h>
extracts boundary cycles and merges the duplicated vertices of each cycle.
PolygonMesh | a model of FaceListGraph and MutableFaceGraph . |
NamedParameter | a sequence of Named Parameters. |
pm | the polygon mesh which contains the cycles. |
np | optional parameter of Named Parameters listed below. |
vertex_point_map | the property map with the points associated to the vertices of pm . If this parameter is omitted, an internal property map for CGAL::vertex_point_t should be available in PolygonMesh |
OutputIterator CGAL::Polygon_mesh_processing::non_manifold_vertices | ( | const PolygonMesh & | pm, |
OutputIterator | out | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
collects the non-manifold vertices (if any) present in the mesh.
A non-manifold vertex v
is returned via one incident halfedge h
such that target(h, pm) = v
for all the umbrellas that v
apppears in (an umbrella being the set of faces incident to all the halfedges reachable by walking around v
using hnext = prev(opposite(h, pm), pm)
, starting from h
).
PolygonMesh | a model of HalfedgeListGraph |
OutputIterator | a model of OutputIterator holding objects of type boost::graph_traits<PolygonMesh>::halfedge_descriptor |
pm | a triangle mesh |
out | the output iterator that collects halfedges incident to v |
void CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh | ( | const PointRange & | points, |
const PolygonRange & | polygons, | ||
PolygonMesh & | out | ||
) |
#include <CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h>
builds a polygon mesh from a soup of polygons.
PolygonMesh | a model of MutableFaceGraph with an internal point property map |
PointRange | a model of the concepts RandomAccessContainer and BackInsertionSequence whose value type is the point type |
PolygonRange | a model of the concept RandomAccessContainer whose value_type is a model of the concept RandomAccessContainer whose value_type is std::size_t . |
points | points of the soup of polygons |
polygons | each element in the vector describes a polygon using the index of the points in points |
out | the polygon mesh to be built |
std::size_t CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup | ( | PointRange & | points, |
PolygonRange & | polygons | ||
) |
#include <CGAL/Polygon_mesh_processing/repair_polygon_soup.h>
Removes the isolated points from a polygon soup.
A point is considered isolated if it does not appear in any polygon of the soup.
PointRange | a model of the concept SequenceContainer whose value type is the point type. |
PolygonRange | a model of the concept RandomAccessContainer whose value_type is itself a model of the concept RandomAccessContainer whose value_type is std::size_t . |
points | points of the soup of polygons. |
polygons | a vector of polygons. Each element in the vector describes a polygon using the indices of the points in points . |
std::size_t CGAL::Polygon_mesh_processing::remove_isolated_vertices | ( | PolygonMesh & | pmesh | ) |
#include <CGAL/Polygon_mesh_processing/repair.h>
removes the isolated vertices from any polygon mesh.
A vertex is considered isolated if it is not incident to any simplex of higher dimension.
PolygonMesh | a model of FaceListGraph and MutableFaceGraph |
pmesh | the polygon mesh to be repaired |
void CGAL::Polygon_mesh_processing::repair_polygon_soup | ( | PointRange & | points, |
PolygonRange & | polygons, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair_polygon_soup.h>
Cleans a given polygon soup through various repairing operations.
More precisely, this function carries out the following tasks, in the same order as they are listed:
CGAL::Polygon_mesh_processing::merge_duplicate_points_in_polygon_soup()
;CGAL::Polygon_mesh_processing::merge_duplicate_polygons_in_polygon_soup()
;CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup()
.Note that the point and polygon containers will be modified by the repairing operations, and thus the indexation of the polygons will also be changed.
PointRange | a model of the concepts SequenceContainer and Swappable and whose value type is the point type. |
PolygonRange | a model of the concept SequenceContainer . whose value_type is itself a model of the concepts SequenceContainer , Swappable , and ReversibleContainer whose value_type is std::size_t . |
NamedParameters | a sequence of Named Parameters |
points | points of the soup of polygons. |
polygons | a vector of polygons. Each element in the vector describes a polygon using the indices of the points in points . |
np | optional Named Parameters, amongst those described below |
geom_traits | a geometric traits class instance. The traits class must provide the nested functors :
and, for each functor |
erase_all_duplicates | Parameter forwarded to the function merge_duplicate_polygons_in_polygon_soup() to indicate, when multiple polygons are duplicates, whether all the duplicate polygons should be removed or if one (arbitrarily chosen) face should be kept. Default is false . |
require_same_orientation | Parameter forwarded to the function merge_duplicate_polygons_in_polygon_soup() to indicate if polygon orientation should be taken into account when determining whether two polygons are duplicates, that is, whether e.g. the triangles 0,1,2 and 0,2,1 are duplicates. Default is false . |
void CGAL::Polygon_mesh_processing::stitch_borders | ( | PolygonMesh & | pmesh, |
const HalfedgePairsRange & | hedge_pairs_to_stitch | ||
) |
#include <CGAL/Polygon_mesh_processing/stitch_borders.h>
Stitches together border halfedges in a polygon mesh.
The halfedges to be stitched are provided in hedge_pairs_to_stitch
. For each pair p
in this vector, p.second
and its opposite will be removed from pmesh
.
PolygonMesh | a model of MutableFaceGraph |
HalfedgePairsRange | a range of std::pair<boost::graph_traits<PolygonMesh>::halfedge_descriptor, boost::graph_traits<PolygonMesh>::halfedge_descriptor> , model of Range . Its iterator type is InputIterator . |
pmesh | the polygon mesh to be modified by stitching |
hedge_pairs_to_stitch | a range of std::pair of halfedges to be stitched together |
void CGAL::Polygon_mesh_processing::stitch_borders | ( | PolygonMesh & | pmesh, |
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/stitch_borders.h>
Same as the other overload but the pairs of halfedges to be stitched are automatically found amongst all border halfedges.
Two border halfedges h1
and h2
are set to be stitched if the points associated to the source and target vertices of h1
are the same as those of the target and source vertices of h2
respectively.
PolygonMesh | a model of FaceListGraph and MutableFaceGraph |
NamedParameters | a sequence of Named Parameters |
pmesh | the polygon mesh to be modified by stitching |
np | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | the property map with the points associated to the vertices of pmesh . If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in PolygonMesh . |
apply_per_connected_component | specifies if the borders should only be stitched inside their own connected component. In that case, a property map for CGAL::face_index_t should be either available as an internal property map to pmesh or provided as the Named Parameter face_index_map . If this is not the case, a default map will be created on the fly. Default value is false . |
face_index_map | a property map containing the index of each face of pmesh |
std::size_t CGAL::Polygon_mesh_processing::stitch_boundary_cycle | ( | const typename boost::graph_traits< PolygonMesh >::halfedge_descriptor | h, |
PolygonMesh & | pm, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/stitch_borders.h>
Stitches together, whenever possible, two halfedges belonging to the boundary cycle described by the halfedge h
.
Two border halfedges h1
and h2
can be stitched if the points associated to the source and target vertices of h1
are the same as those of the target and source vertices of h2
respectively.
PolygonMesh | a model of MutableFaceGraph |
NamedParameters | a sequence of Named Parameters |
h | a border halfedge of the polygon mesh pm |
pm | the polygon mesh to be stitched |
np | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | the property map with the points associated to the vertices of pmesh . If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in PolygonMesh . |
std::size_t CGAL::Polygon_mesh_processing::stitch_boundary_cycles | ( | PolygonMesh & | pm, |
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/stitch_borders.h>
Stitches together, whenever possible, two halfedges belonging to the same boundary cycle.
Two border halfedges h1
and h2
can be stitched if the points associated to the source and target vertices of h1
are the same as those of the target and source vertices of h2
respectively.
PolygonMesh | a model of MutableFaceGraph |
NamedParameters | a sequence of Named Parameters |
pm | the polygon mesh to be stitched |
np | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | the property map with the points associated to the vertices of pmesh . If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in PolygonMesh . |