mirror of https://github.com/CGAL/cgal
Add SMS::Envelope_filter
This commit is contained in:
parent
bf304eee15
commit
ff368dd84f
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
namespace CGAL {
|
||||||
|
namespace Surface_mesh_simplification {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\ingroup PkgSurfaceMeshSimplificationRef
|
||||||
|
|
||||||
|
The class `Envelope_filter` is a model for the `GetFilter` concept.
|
||||||
|
It rejects the placement if the nested filter rejects it, or
|
||||||
|
if any triangle in the profile is not inside the polyhedral envelope, in this order.
|
||||||
|
|
||||||
|
|
||||||
|
\tparam Get_filter_ must be a model of the concept `GetFilter`. It defaults to a class that does
|
||||||
|
not filter any placement.
|
||||||
|
|
||||||
|
\cgalModels `GetFilter`
|
||||||
|
|
||||||
|
\sa `Envelope`
|
||||||
|
|
||||||
|
*/
|
||||||
|
template <typename GeomTraits,typename GetFilter_>
|
||||||
|
class Envelope_filter {
|
||||||
|
public:
|
||||||
|
|
||||||
|
/// The number type
|
||||||
|
typedef typename Geom_traits::FT FT;
|
||||||
|
|
||||||
|
/// \name Creation
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
%Default constructor
|
||||||
|
*/
|
||||||
|
Envelope_filter();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructor
|
||||||
|
|
||||||
|
\param get_filter is the filter that will be filtered.
|
||||||
|
*/
|
||||||
|
Envelope_filter(const FT& dist, const GetFilter_& get_filter);
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
/// \name Operations
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the placement, if it does not get filtered by the wrapped filter,
|
||||||
|
and if all triangles in the profile are inside the polyhedral envelope.
|
||||||
|
*/
|
||||||
|
boost::optional<typename Edge_profile::Point> operator()(const Edge_profile& profile,
|
||||||
|
boost::optional<typename Profile::Point> op) const;
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
|
||||||
|
}; /* end Surface_mesh_simplification::Envelope_filter */
|
||||||
|
} // namespace Surface_Mesh_Simplification
|
||||||
|
} // namespace CGAL
|
||||||
Loading…
Reference in New Issue