CGAL 5.1 - Polygon Mesh Processing
|
Functions to repair polygon soups and polygon meshes.
Functions | |
template<typename PolygonMesh > | |
bool | CGAL::Polygon_mesh_processing::is_non_manifold_vertex (typename boost::graph_traits< PolygonMesh >::vertex_descriptor v, const PolygonMesh &pm) |
template<typename PolygonMesh , typename OutputIterator > | |
OutputIterator | CGAL::Polygon_mesh_processing::non_manifold_vertices (const PolygonMesh &pm, OutputIterator out) |
template<typename PolygonMesh , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::duplicate_non_manifold_vertices (PolygonMesh &pm, const NamedParameters &np) |
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) |
template<class PolygonMesh , class NamedParameter > | |
void | CGAL::Polygon_mesh_processing::merge_duplicated_vertices_in_boundary_cycles (PolygonMesh &pm, const NamedParameter &np) |
template<typename PolygonMesh , typename PointRange , typename PolygonRange , typename NamedParameters > | |
void | CGAL::Polygon_mesh_processing::polygon_mesh_to_polygon_soup (const PolygonMesh &mesh, PointRange &points, PolygonRange &polygons, const NamedParameters &np) |
template<typename PolygonRange > | |
bool | CGAL::Polygon_mesh_processing::is_polygon_soup_a_polygon_mesh (const PolygonRange &polygons) |
template<typename PolygonMesh , typename PointRange , typename PolygonRange , typename NamedParameters_PS , typename NamedParameters_PM > | |
void | CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh (const PointRange &points, const PolygonRange &polygons, PolygonMesh &out, const NamedParameters_PS &np_ps, const NamedParameters_PM &np_pm) |
template<class PolygonMesh > | |
std::size_t | CGAL::Polygon_mesh_processing::remove_isolated_vertices (PolygonMesh &pmesh) |
template<typename TriangleMesh , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::remove_connected_components_of_negligible_size (TriangleMesh &tmesh, const NamedParameters &np) |
template<typename PointRange , typename PolygonRange > | |
std::size_t | CGAL::Polygon_mesh_processing::remove_isolated_points_in_polygon_soup (PointRange &points, PolygonRange &polygons) |
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) |
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) |
template<typename PointRange , typename PolygonRange , typename NamedParameters > | |
void | CGAL::Polygon_mesh_processing::repair_polygon_soup (PointRange &points, PolygonRange &polygons, const NamedParameters &np) |
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) |
template<typename EdgeRange , typename TriangleMesh , typename OutputIterator , typename NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_edges (const EdgeRange &edges, const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
template<typename TriangleMesh , typename OutputIterator , typename NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_edges (const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
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) |
template<typename FaceRange , typename TriangleMesh , typename OutputIterator , typename NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_faces (const FaceRange &faces, const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
template<typename TriangleMesh , typename OutputIterator , typename NamedParameters > | |
OutputIterator | CGAL::Polygon_mesh_processing::degenerate_faces (const TriangleMesh &tm, OutputIterator out, const NamedParameters &np) |
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) |
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) |
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) |
template<typename PolygonMesh , typename NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::stitch_boundary_cycles (PolygonMesh &pm, const NamedParameters &np) |
template<typename PolygonMesh , typename HalfedgePairsRange > | |
std::size_t | CGAL::Polygon_mesh_processing::stitch_borders (PolygonMesh &pmesh, const HalfedgePairsRange &hedge_pairs_to_stitch) |
template<typename PolygonMesh , class NamedParameters > | |
std::size_t | CGAL::Polygon_mesh_processing::stitch_borders (PolygonMesh &pmesh, const NamedParameters &np) |
OutputIterator CGAL::Polygon_mesh_processing::degenerate_edges | ( | const EdgeRange & | edges, |
const TriangleMesh & | tm, | ||
OutputIterator | out, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/shape_predicates.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/shape_predicates.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/shape_predicates.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/shape_predicates.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/manifoldness.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/manifoldness.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/manifoldness.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_mesh_to_polygon_soup | ( | const PolygonMesh & | mesh, |
PointRange & | points, | ||
PolygonRange & | polygons, | ||
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/polygon_mesh_to_polygon_soup.h>
Adds the vertices and faces of a mesh into a (possibly non-empty) polygon soup.
PolygonMesh | a model of FaceListGraph |
PointRange | a model of the concepts RandomAccessContainer and BackInsertionSequence whose value type can be constructed from the point type of the polygon mesh |
PolygonRange | a model of the concepts RandomAccessContainer and BackInsertionSequence whose value type is itself a model of the concepts RandomAccessContainer and BackInsertionSequence whose value type is std::size_t |
NamedParameters | a sequence of Named Parameters |
mesh | the mesh whose faces are being put in the polygon soup |
points | points making the polygons of the soup |
polygons | each element in the vector describes a polygon using the indices of the points in points |
np | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | a model of ReadablePropertyMap , the property map with the points associated to the vertices of mesh . If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in PolygonMesh . |
PolygonRange
can also be a model of the concepts RandomAccessContainer
and BackInsertionSequence
whose value type is an array, but it is the user's responsability to ensure that all faces have the same number of vertices, and that this number is equal to the size of the array.
void CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh | ( | const PointRange & | points, |
const PolygonRange & | polygons, | ||
PolygonMesh & | out, | ||
const NamedParameters_PS & | np_ps, | ||
const NamedParameters_PM & | np_pm | ||
) |
#include <CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h>
builds a polygon mesh from a soup of polygons.
CGAL::Polygon_mesh_processing::is_polygon_soup_a_polygon_mesh(polygons)
.PolygonMesh | a model of MutableFaceGraph |
PointRange | a model of the concept RandomAccessContainer 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 |
NamedParameters_PS | a sequence of Named Parameters |
NamedParameters_PM | a sequence of Named Parameters |
points | points of the soup of polygons |
polygons | each element in the vector describes a polygon using the indices of the points in points |
out | the polygon mesh to be built |
np_ps | optional sequence of Named Parameters among the ones listed below |
point_map | a model of ReadablePropertyMap whose value type is a point type convertible to the point type of the vertex point map associated to the polygon mesh. If this parameter is omitted, CGAL::Identity_property_map is used. |
np_pm | optional sequence of Named Parameters among the ones listed below |
vertex_point_map | a model of WritablePropertyMap , the property map with the points associated to the vertices of out . 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::remove_connected_components_of_negligible_size | ( | TriangleMesh & | tmesh, |
const NamedParameters & | np | ||
) |
#include <CGAL/Polygon_mesh_processing/repair.h>
removes connected components whose area or volume is under a certain threshold value.
Thresholds are provided via Named Parameters. (see below). If thresholds are not provided by the user, default values are computed as follows:
The area and volume of a connected component will always be positive values (regardless of the orientation of the mesh).
As a consequence of the last sentence, the area or volume criteria can be disabled by passing zero (0
) as threshold value.
TriangleMesh | a model of FaceListGraph and MutableFaceGraph |
NamedParameters | a sequence of Named Parameters |
tmesh | the triangulated polygon mesh |
np | optional Named Parameters, amongst those described below |
area_threshold | a fixed value such that only connected components whose area is larger than this value are kept |
volume_threshold | a fixed value such that only connected components whose volume is larger than this value are kept (only applies to closed connected components) |
edge_is_constrained_map | a property map containing the constrained-or-not status of each edge of pmesh |
face_index_map | a property map containing the index of each face of tmesh |
vertex_point_map | the property map with the points associated to the vertices of tmesh . |
geom_traits | an instance of a geometric traits class, model of Kernel |
dry_run | a Boolean parameter. If set to true , the mesh will not be altered, but the number of components that would be removed is returned. The default value is false . |
output_iterator | a model of OutputIterator with value type face_descriptor . When using the "dry run" mode (see parameter dry_run ), faces that would be removed by the algorithm can be collected with this output iterator. |
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 . |
std::size_t 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 |
std::size_t 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. Default value is false . |
face_index_map | a property map containing for each face of pmesh a unique index between 0 and num_faces(pmesh)-1 |
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 . |