This class can be used to check if a query point, segment, or triangle is inside or outside a polyhedral envelope of a set of triangles, constructed for a given \( \epsilon \) distance tolerance.
Constructor using a subset of faces of a triangulated surface mesh.
Template Parameters
FaceRange
a model of ConstRange with ConstRange::const_iterator being a model of InputIterator with boost::graph_traits<TriangleMesh>::face_descriptor as value type
TriangleMesh
a model of FaceListGraph
NamedParameters
a sequence of Named Parameters
Parameters
tmesh
a triangle mesh
face_range
the subset of faces to be considered when computing the polyhedron envelope
epsilon
the distance of the Minkowski sum hull
np
an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
a property map associating points to the vertices of tmesh
Type: a class model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::vertex_descriptor as key type and Point_3 as value type
Default: boost::get(CGAL::vertex_point, tmesh)
Extra: If this parameter is omitted, an internal property map for CGAL::vertex_point_t must be available in TriangleMesh.
a property map associating to each face of tm an epsilon value
Type: a class model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::face_descriptor as key type and double as value type
Default: Use epsilon for all faces
Note
The triangle mesh gets copied internally, that is it can be modified after having passed as argument, while the queries are performed
a model of the concept ConstRange with PointRange::const_iterator being a model of InputIterator with a point as value type
TriangleRange
a model of the concept ConstRange with TriangleRange::const_iterator being a model of InputIterator whose value type is model of the concept RandomAccessContainer whose value_type is convertible to std::size_t.
NamedParameters
a sequence of Named Parameters
Parameters
points
points of the soup of triangles
triangles
each element in the range describes a triangle as a triple of indices of the points in points
epsilon
the distance of the Minkowski sum hull
np
an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
a property map associating points to the elements of the range points
Type: a model of ReadablePropertyMap whose value type is Point_3 and whose key is the value type of PointRange::const_iterator
Default: CGAL::Identity_property_map
a property map associating to each triangle an epsilon value
Type: a class model of ReadablePropertyMap with std::size_t as key type and double as value type
returns true, iff all the triangles in triangles are inside the polyhedral envelope.
Template Parameters
PointRange
a model of the concept ConstRange with PointRange::const_iterator being a model of InputIterator with a point as value type
TriangleRange
a model of the concept ConstRange with TriangleRange::const_iterator being a model of InputIterator whose value type is model of the concept RandomAccessContainer whose value_type is convertible to std::size_t.
NamedParameters
a sequence of Named Parameters
Parameters
points
points of the soup of triangles
triangles
each element in the range describes a triangle as a triple of indices of the points in points
np
an optional sequence of Named Parameters among the ones listed below
Optional Named Parameters
a property map associating points to the elements of the range points
Type: a model of ReadablePropertyMap whose value type is Point_3 and whose key is the value type of PointRange::const_iterator
Add ConcurrencyTag as template parameter + use TBB parallel for
Find a way to test the containment of the vertices first and then the triangles. It requires to have a map vertex->prism id so that we can test if the 3 vertices of a face are in the same face + have the initial list of prisms.
returns true, iff all the triangles in triangle_range are inside the polyhedral envelope.
Template Parameters
TriangleRange
a model of ConstRange with ConstRange::const_iterator being a model of InputIterator with a value type being itself a model of ConstRange with ConstRange::const_iterator being a model of InputIterator with Point_3 as value type.