CGAL 6.1.2 - Polygon Mesh Processing: CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 > Struct Template Reference

CGAL 6.1.2 - Polygon Mesh Processing

Loading...
Searching...
No Matches
List of all members | Public Member Functions
CGAL::Polygon_mesh_processing::Corefinement::Non_manifold_output_visitor< TriangleMesh, VPM1, VPM2 > Struct Template Reference
Reference Manual » Corefinement and Boolean Operations

`#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

  TriangleMesh | a model of `HalfedgeListGraph`, `FaceListGraph`, and `MutableFaceGraph`
  VPM1 | a class model of `ReadablePropertyMap` with `boost::graph_traits<TriangleMesh>::vertex_descriptor` as key type and an unspecified type `Point_3` as value type
  VPM2 | a 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

  tm1 | first triangle mesh in the same order as in the function in Corefinement and Boolean Operations
  tm2 | second triangle mesh in the same order as in the function in Corefinement and Boolean Operations
  vpm1 | vertex point map for `tm1`
  vpm2 | vertex 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

  PointRange | a model of the concept `RandomAccessContainer` whose value type is the value type of `VPM1` and `VPM2`.
  PolygonRange | a 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

  PointRange | a model of the concept `RandomAccessContainer` whose value type is the value type of `VPM1` and `VPM2`.
  PolygonRange | a 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

  PointRange | a model of the concept `RandomAccessContainer` whose value type is the value type of `VPM1` and `VPM2`.
  PolygonRange | a 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

  PointRange | a model of the concept `RandomAccessContainer` whose value type is the value type of `VPM1` and `VPM2`.
  PolygonRange | a 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`