CGAL 6.0 - Polygon Mesh Processing
Loading...
Searching...
No Matches
CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 > Struct Template Reference

#include <CGAL/Polygon_mesh_processing/corefinement.h>

Inherits from

CGAL::Polygon_mesh_processing::Corefinement::Default_visitor< TriangleMesh >.

Definition

template<class TriangleMesh, class VPM1 = typename boost::property_map<TriangleMesh, vertex_point_t>::type, class VPM2 = typename boost::property_map<TriangleMesh, vertex_point_t>::type>
struct CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 >
Is model of
PMPCorefinementVisitor

A model of PMPCorefinementVisitor that enables extracting non-manifold outputs from a corefinement-based Boolean Operations (Corefinement and Boolean Operations).

Template Parameters
TriangleMesha model of HalfedgeListGraph, FaceListGraph, and MutableFaceGraph
VPM1a class model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and an unspecified type Point_3 as value type
VPM2a class model of ReadablePropertyMap with boost::graph_traits<TriangleMesh>::vertex_descriptor as key type and the same value type as VPM1

Public Member Functions

 Non_manifold_output_visitor (TriangleMesh &tm1, TriangleMesh &tm2, VPM1 vpm1=get(CGAL::vertex_point, tm1), VPM1 vpm2=get(CGAL::vertex_point, tm2))
 constructor where meshes are exactly the same as the one passed a function in Corefinement and Boolean Operations.
 
template<typename PointRange , typename PolygonRange >
void extract_intersection (PointRange &points, PolygonRange &triangles)
 fills a polygon soup with the intersection between input meshes provided in the constructor, after a call to either corefine_and_compute_boolean_operations() or corefine_and_compute_intersection().
 
template<typename PointRange , typename PolygonRange >
void extract_union (PointRange &points, PolygonRange &triangles)
 fills a polygon soup with the union between input meshes provided in the constructor, after a call to either corefine_and_compute_boolean_operations() or corefine_and_compute_union().
 
template<typename PointRange , typename PolygonRange >
void extract_tm1_minus_tm2 (PointRange &points, PolygonRange &triangles)
 fills a polygon soup with the difference between input meshes provided in the constructor, after a call to either corefine_and_compute_boolean_operations() or corefine_and_compute_difference().
 
template<typename PointRange , typename PolygonRange >
void extract_tm2_minus_tm1 (PointRange &points, PolygonRange &triangles)
 fills a polygon soup with the opposite difference between input meshes provided in the constructor, after a call to corefine_and_compute_boolean_operations().
 

Constructor & Destructor Documentation

◆ Non_manifold_output_visitor()

template<class TriangleMesh , class VPM1 = typename boost::property_map<TriangleMesh, vertex_point_t>::type, class VPM2 = typename boost::property_map<TriangleMesh, vertex_point_t>::type>
CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 >::Non_manifold_output_visitor ( TriangleMesh &  tm1,
TriangleMesh &  tm2,
VPM1  vpm1 = get(CGAL::vertex_point, tm1),
VPM1  vpm2 = get(CGAL::vertex_point, tm2) 
)

constructor where meshes are exactly the same as the one passed a function in Corefinement and Boolean Operations.

The visitor cannot be reused for several calls to the aforementioned function.

Parameters
tm1first triangle mesh in the same order as in the function in Corefinement and Boolean Operations
tm2second triangle mesh in the same order as in the function in Corefinement and Boolean Operations
vpm1vertex point map for tm1
vpm2vertex point map for tm2

Member Function Documentation

◆ extract_intersection()

template<class TriangleMesh , class VPM1 = typename boost::property_map<TriangleMesh, vertex_point_t>::type, class VPM2 = typename boost::property_map<TriangleMesh, vertex_point_t>::type>
template<typename PointRange , typename PolygonRange >
void CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 >::extract_intersection ( PointRange &  points,
PolygonRange &  triangles 
)

fills a polygon soup with the intersection between input meshes provided in the constructor, after a call to either corefine_and_compute_boolean_operations() or corefine_and_compute_intersection().

Template Parameters
PointRangea model of the concept RandomAccessContainer whose value type is the value type of VPM1 and VPM2.
PolygonRangea model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is itself a model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is an unsigned integer type convertible to std::size_t

◆ extract_tm1_minus_tm2()

template<class TriangleMesh , class VPM1 = typename boost::property_map<TriangleMesh, vertex_point_t>::type, class VPM2 = typename boost::property_map<TriangleMesh, vertex_point_t>::type>
template<typename PointRange , typename PolygonRange >
void CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 >::extract_tm1_minus_tm2 ( PointRange &  points,
PolygonRange &  triangles 
)

fills a polygon soup with the difference between input meshes provided in the constructor, after a call to either corefine_and_compute_boolean_operations() or corefine_and_compute_difference().

Template Parameters
PointRangea model of the concept RandomAccessContainer whose value type is the value type of VPM1 and VPM2.
PolygonRangea model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is itself a model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is an unsigned integer type convertible to std::size_t

◆ extract_tm2_minus_tm1()

template<class TriangleMesh , class VPM1 = typename boost::property_map<TriangleMesh, vertex_point_t>::type, class VPM2 = typename boost::property_map<TriangleMesh, vertex_point_t>::type>
template<typename PointRange , typename PolygonRange >
void CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 >::extract_tm2_minus_tm1 ( PointRange &  points,
PolygonRange &  triangles 
)

fills a polygon soup with the opposite difference between input meshes provided in the constructor, after a call to corefine_and_compute_boolean_operations().

Template Parameters
PointRangea model of the concept RandomAccessContainer whose value type is the value type of VPM1 and VPM2.
PolygonRangea model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is itself a model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is an unsigned integer type convertible to std::size_t

◆ extract_union()

template<class TriangleMesh , class VPM1 = typename boost::property_map<TriangleMesh, vertex_point_t>::type, class VPM2 = typename boost::property_map<TriangleMesh, vertex_point_t>::type>
template<typename PointRange , typename PolygonRange >
void CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 >::extract_union ( PointRange &  points,
PolygonRange &  triangles 
)

fills a polygon soup with the union between input meshes provided in the constructor, after a call to either corefine_and_compute_boolean_operations() or corefine_and_compute_union().

Template Parameters
PointRangea model of the concept RandomAccessContainer whose value type is the value type of VPM1 and VPM2.
PolygonRangea model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is itself a model of the concepts RandomAccessContainer and BackInsertionSequence whose value_type is an unsigned integer type convertible to std::size_t