CGAL 4.10.1 - Polygon Mesh Processing
|
Functions to compute or change the orientation of faces and surfaces.
Functions | |
template<typename PolygonMesh , typename NamedParameters > | |
bool | CGAL::Polygon_mesh_processing::is_outward_oriented (const PolygonMesh &pmesh, const NamedParameters &np) |
tests whether a closed polygon mesh has a positive orientation. More... | |
template<typename PolygonMesh > | |
void | CGAL::Polygon_mesh_processing::reverse_face_orientations (PolygonMesh &pmesh) |
reverses for each face the order of the vertices along the face boundary. More... | |
template<typename PolygonMesh , typename FaceRange > | |
void | CGAL::Polygon_mesh_processing::reverse_face_orientations (const FaceRange &face_range, PolygonMesh &pmesh) |
reverses for each face in face_range the order of the vertices along the face boundary. More... | |
template<class PointRange , class PolygonRange > | |
bool | CGAL::Polygon_mesh_processing::orient_polygon_soup (PointRange &points, PolygonRange &polygons) |
tries to consistently orient a soup of polygons in 3D space. More... | |
bool CGAL::Polygon_mesh_processing::is_outward_oriented | ( | const PolygonMesh & | pmesh, |
const NamedParameters & | np | ||
) |
tests whether a closed polygon mesh has a positive orientation.
A closed polygon mesh is considered to have a positive orientation if the normal vectors to all its faces point outside the domain bounded by the polygon mesh. The normal vector to each face is chosen pointing on the side of the face where its sequence of vertices is seen counterclockwise.
CGAL::is_closed(pmesh)
pmesh
contains several connected components, they are oriented consistently. In other words, the answer to this predicate would be the same for each isolated connected component.PolygonMesh | a model of FaceListGraph |
NamedParameters | a sequence of Named Parameters |
pmesh | the closed polygon mesh to be tested |
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 |
geom_traits | a geometric traits class instance |
#include <CGAL/Polygon_mesh_processing/orientation.h>
bool CGAL::Polygon_mesh_processing::orient_polygon_soup | ( | PointRange & | points, |
PolygonRange & | polygons | ||
) |
tries to consistently orient a soup of polygons in 3D space.
When it is not possible to produce a combinatorial manifold surface, some points are duplicated. Because a polygon soup does not have any connectivity (each point has as many occurences as the number of polygons it belongs to), duplicating one point (or a pair of points) amounts to duplicate the polygon to which it belongs.
These points are either an endpoint of an edge incident to more than two polygons, an endpoint of an edge between two polygons with incompatible orientations (during the re-orientation process), or more generally a point p at which the intersection of an infinitesimally small ball centered at p with the polygons incident to it is not a topological disk.
The algorithm is described in [1].
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. Some points might be pushed back to resolve non-manifold or non-orientability issues. |
polygons | each element in the vector describes a polygon using the index of the points in points . If needed the order of the indices of a polygon might be reversed. |
true
if the orientation operation succeded. false
if some points were duplicated, thus producing a self-intersecting polyhedron. #include <CGAL/Polygon_mesh_processing/orient_polygon_soup.h>
void CGAL::Polygon_mesh_processing::reverse_face_orientations | ( | PolygonMesh & | pmesh) |
reverses for each face the order of the vertices along the face boundary.
PolygonMesh | a model of FaceListGraph and MutableFaceGraph |
#include <CGAL/Polygon_mesh_processing/orientation.h>
void CGAL::Polygon_mesh_processing::reverse_face_orientations | ( | const FaceRange & | face_range, |
PolygonMesh & | pmesh | ||
) |
reverses for each face in face_range
the order of the vertices along the face boundary.
The function does not perform any control and if the orientation change of the faces makes the polygon mesh invalid, the behavior is undefined.
PolygonMesh | a model of FaceListGraph and MutableFaceGraph |
FaceRange | range of face descriptors, model of Range . Its iterator type is InputIterator . |
#include <CGAL/Polygon_mesh_processing/orientation.h>