SFCGAL  2.3.0
Functions
SFCGAL::algorithm::detail Namespace Reference

Functions

auto isClosedLineString (const LineString &linestring) -> Closure
 
auto isClosedPolyhedralSurface (const PolyhedralSurface &surface) -> Closure
 
auto isClosedTriangulatedSurface (const TriangulatedSurface &surface) -> Closure
 
auto isClosedSolid (const Solid &solid) -> Closure
 
auto isClosedMultiLineString (const MultiLineString &mls) -> Closure
 
auto isClosedMultiSolid (const MultiSolid &msolid) -> Closure
 
auto isClosedNURBSCurve (const NURBSCurve &nurbsCurve) -> Closure
 
auto validatePolygonRingsBasic (const Polygon &polygon) -> Validity
 
auto validatePolygonRingsOrientation (const Polygon &polygon, const double &toleranceAbs) -> Validity
 
auto validatePolygonRingsIntersections (const Polygon &polygon) -> Validity
 
auto validatePolygonInteriorRings (const Polygon &polygon) -> Validity
 
template<typename StopPredicate >
auto defaultEdgeCollapser (Surface_mesh_3 &mesh, const StopPredicate &stop) -> size_t
 Apply edge collapse simplification using Edge Length cost and Midpoint placement. More...
 
template<typename Mesh , typename EdgeCollapseFn >
auto applyEdgeCollapserThroughEdgeCount (Mesh &mesh, const size_t targetEdgeCount, EdgeCollapseFn &&edgeCollapseFn) -> size_t
 Call a simplification function on a mesh (exact or inexact) depending on an edge count stop predicate. More...
 
template<typename Mesh , typename EdgeCollapseFn >
auto applyEdgeCollapserThroughEdgeRatio (Mesh &mesh, const double &ratio, EdgeCollapseFn &&edgeCollapseFn) -> size_t
 Call a simplification function on a mesh (exact or inexact) depending on an edge count ratio stop predicate. More...
 
template<typename Mesh , typename EdgeCollapseFn >
auto applyEdgeCollapserWithStopPredicate (Mesh &mesh, const SimplificationStopPredicate &stop, EdgeCollapseFn &&edgeCollapseFn) -> size_t
 Call a simplification function on a mesh (exact or inexact) depending on a stop predicate. More...
 
auto simplifySurfaceMesh (Surface_mesh_3 &mesh, const SimplificationStopPredicate &stop, SimplificationStrategy strategy) -> size_t
 Entry point for simplifying surface meshes. More...
 
auto simplifyTriangulatedSurface (const TriangulatedSurface &surface, const SimplificationStopPredicate &stopPredicate, SimplificationStrategy strategy) -> std::unique_ptr< TriangulatedSurface >
 Simplify a TriangulatedSurface. More...
 
auto simplifyPolyhedralSurface (const PolyhedralSurface &surface, const SimplificationStopPredicate &stopPredicate, SimplificationStrategy strategy) -> std::unique_ptr< PolyhedralSurface >
 Simplify a PolyhedralSurface. More...
 
auto simplifySolid (const Solid &solid, const SimplificationStopPredicate &stopPredicate, SimplificationStrategy strategy) -> std::unique_ptr< Solid >
 Simplify a Solid (only exterior shell) More...
 
auto simplifyMultiSolid (const MultiSolid &multiSolid, const SimplificationStopPredicate &stopPredicate, SimplificationStrategy strategy) -> std::unique_ptr< MultiSolid >
 Simplify a MultiSolid. More...
 

Function Documentation

template<typename Mesh , typename EdgeCollapseFn >
auto SFCGAL::algorithm::detail::applyEdgeCollapserThroughEdgeCount ( Mesh &  mesh,
const size_t  targetEdgeCount,
EdgeCollapseFn &&  edgeCollapseFn 
) -> size_t

Call a simplification function on a mesh (exact or inexact) depending on an edge count stop predicate.

template<typename Mesh , typename EdgeCollapseFn >
auto SFCGAL::algorithm::detail::applyEdgeCollapserThroughEdgeRatio ( Mesh &  mesh,
const double &  ratio,
EdgeCollapseFn &&  edgeCollapseFn 
) -> size_t

Call a simplification function on a mesh (exact or inexact) depending on an edge count ratio stop predicate.

template<typename Mesh , typename EdgeCollapseFn >
auto SFCGAL::algorithm::detail::applyEdgeCollapserWithStopPredicate ( Mesh &  mesh,
const SimplificationStopPredicate &  stop,
EdgeCollapseFn &&  edgeCollapseFn 
) -> size_t

Call a simplification function on a mesh (exact or inexact) depending on a stop predicate.

The function handles edge count as well as edge ratio stop predicates.

template<typename StopPredicate >
auto SFCGAL::algorithm::detail::defaultEdgeCollapser ( Surface_mesh_3 &  mesh,
const StopPredicate &  stop 
) -> size_t

Apply edge collapse simplification using Edge Length cost and Midpoint placement.

auto SFCGAL::algorithm::detail::isClosedLineString ( const LineString &  linestring) -> Closure
auto SFCGAL::algorithm::detail::isClosedMultiLineString ( const MultiLineString &  mls) -> Closure
auto SFCGAL::algorithm::detail::isClosedMultiSolid ( const MultiSolid &  msolid) -> Closure
auto SFCGAL::algorithm::detail::isClosedNURBSCurve ( const NURBSCurve &  nurbsCurve) -> Closure
auto SFCGAL::algorithm::detail::isClosedPolyhedralSurface ( const PolyhedralSurface &  surface) -> Closure
auto SFCGAL::algorithm::detail::isClosedSolid ( const Solid &  solid) -> Closure
auto SFCGAL::algorithm::detail::isClosedTriangulatedSurface ( const TriangulatedSurface &  surface) -> Closure
auto SFCGAL::algorithm::detail::simplifyMultiSolid ( const MultiSolid &  multiSolid,
const SimplificationStopPredicate &  stopPredicate,
SimplificationStrategy  strategy 
) -> std::unique_ptr<MultiSolid>

Simplify a MultiSolid.

auto SFCGAL::algorithm::detail::simplifyPolyhedralSurface ( const PolyhedralSurface &  surface,
const SimplificationStopPredicate &  stopPredicate,
SimplificationStrategy  strategy 
) -> std::unique_ptr<PolyhedralSurface>

Simplify a PolyhedralSurface.

auto SFCGAL::algorithm::detail::simplifySolid ( const Solid &  solid,
const SimplificationStopPredicate &  stopPredicate,
SimplificationStrategy  strategy 
) -> std::unique_ptr<Solid>

Simplify a Solid (only exterior shell)

auto SFCGAL::algorithm::detail::simplifySurfaceMesh ( Surface_mesh_3 &  mesh,
const SimplificationStopPredicate &  stop,
SimplificationStrategy  strategy 
) -> size_t

Entry point for simplifying surface meshes.

This function encapsulates the selection of the accurate simplification function depending on the chosen strategy. The regular edge length strategy is used as a default case, whilst the Garland-Heckbert and Lindstrom-Turk strategies require the SFCGAL_WITH_EIGEN compilation option. Both strategies trigger a proxy function that deals with a copied mesh computed onto an inexact CGAL kernel.

auto SFCGAL::algorithm::detail::simplifyTriangulatedSurface ( const TriangulatedSurface &  surface,
const SimplificationStopPredicate &  stopPredicate,
SimplificationStrategy  strategy 
) -> std::unique_ptr<TriangulatedSurface>

Simplify a TriangulatedSurface.

auto SFCGAL::algorithm::detail::validatePolygonInteriorRings ( const Polygon &  polygon) -> Validity
auto SFCGAL::algorithm::detail::validatePolygonRingsBasic ( const Polygon &  polygon) -> Validity
auto SFCGAL::algorithm::detail::validatePolygonRingsIntersections ( const Polygon &  polygon) -> Validity
auto SFCGAL::algorithm::detail::validatePolygonRingsOrientation ( const Polygon &  polygon,
const double &  toleranceAbs 
) -> Validity