CGAL 6.2 - 3D Mesh Generation

Loading...
Searching...
No Matches
List of all members | Classes | Public Types | Public Member Functions
CGAL::Polyhedral_mesh_domain_3< Polyhedron, IGT > Class Template Reference
Reference Manual » Domain Classes

`#include <CGAL/Polyhedral_mesh_domain_3.h>`

## Definition

template<class Polyhedron, class IGT>
class CGAL::Polyhedral_mesh_domain_3< Polyhedron, IGT >

The class `Polyhedral_mesh_domain_3` implements a domain defined by a simplicial polyhedral surface.

The input polyhedral surface must be free of intersections.

It must include (at least) one closed connected component that defines the boundary of the domain to be meshed. Inside this bounding component, the input polyhedral surface may contain several other components (closed or not) that will be represented in the final mesh. This class is a model of the concept `MeshDomain_3`.

Note
  When the given surface(s) are not closed, the surface only will be meshed. It is then recommended to use the parameter `parameters::surface_only()` to speedup the meshing process.

Template Parameters

  Polyhedron | stands for the type of the input polyhedral surface(s), model of `FaceListGraph`. It must be a triangle mesh.
  IGT | stands for a geometric traits class providing the types and functors required to implement the intersection tests and intersection computations for polyhedral boundary surfaces. This parameter has to be instantiated with a model of the concept `IntersectionGeometricTraits_3`.

Is model of
  `MeshDomain_3`

See also
  `IntersectionGeometricTraits_3`
  `CGAL::make_mesh_3()`.

Examples
  Mesh_3/mesh_hybrid_mesh_domain.cpp, Mesh_3/mesh_polyhedral_domain.cpp, and Mesh_3/mesh_polyhedral_domain_sm.cpp.

## Classes
struct | Construct_initial_points
| constructs a set of `n` points on the surface, and output them to the output iterator `pts` whose value type is required to be `std::pair<Point_3, Index>`. More...
struct | Construct_intersection
| Returns a point in the intersection of the primitive `type` with some boundary surface. More...
struct | Do_intersect_surface
| Returns `true` if the element `type` intersects properly any of the surface patches describing either the domain boundary or some subdomain boundary. More...
struct | Is_in_domain
| Returns true if point `p` is in the domain. More...

## Public Types
typedef unspecified_type | Index
| Type of indexes to characterize the lowest dimensional face of the input.

## Public Member Functions
Bbox_3 | bbox () const
| Returns a bounding box of the domain.
Index | index_from_surface_patch_index (const Surface_patch_index &index) const
| Returns the index to be stored in a vertex lying on the surface identified by `index`.
Index | index_from_subdomain_index (const Subdomain_index &index) const
| Returns the index to be stored in a vertex lying in the subdomain identified by `index`.
Surface_patch_index | surface_patch_index (const Index &index) const
| Returns the `Surface_patch_index` of the surface patch where lies a vertex with dimension 2 and index `index`.
Subdomain_index | subdomain_index (const Index &index) const
| Returns the index of the subdomain containing a vertex with dimension 3 and index `index`.

## Creation
| Polyhedral_mesh_domain_3 (const Polyhedron &polyhedron)
| Construction from a polyhedral surface which must be free of intersections.
| Polyhedral_mesh_domain_3 (const Polyhedron &p, const Polyhedron &bounding_polyhedron)
| Construction from a polyhedral surface, and a bounding polyhedral surface.
template<typename InputPolyhedraPtrIterator >
| Polyhedral_mesh_domain_3 (InputPolyhedraPtrIterator begin, InputPolyhedraPtrIterator end, const Polyhedron &bounding_polyhedron)
| Constructor from a sequence of polyhedral surfaces, and a bounding polyhedral surface.
template<typename InputPolyhedraPtrIterator >
| Polyhedral_mesh_domain_3 (InputPolyhedraPtrIterator begin, InputPolyhedraPtrIterator end)
| Constructor from a sequence of polyhedral surfaces, without a bounding surface.

## Constructor & Destructor Documentation

## ◆ Polyhedral_mesh_domain_3() [1/4]

template<class Polyhedron , class IGT >

CGAL::Polyhedral_mesh_domain_3< Polyhedron, IGT >::Polyhedral_mesh_domain_3 | ( | const Polyhedron & | polyhedron | ) |

Construction from a polyhedral surface which must be free of intersections.

If `polyhedron` is closed, its inside will be meshed, otherwise there will be no interior and only the surface will be meshed.

## ◆ Polyhedral_mesh_domain_3() [2/4]

template<class Polyhedron , class IGT >

CGAL::Polyhedral_mesh_domain_3< Polyhedron, IGT >::Polyhedral_mesh_domain_3 | ( | const Polyhedron & | p,
|  | const Polyhedron & | bounding_polyhedron
| ) |  |

Construction from a polyhedral surface, and a bounding polyhedral surface.

The first polyhedron must be entirely included inside `bounding_polyhedron`, which must be closed and free of intersections. Using this constructor enables to mesh a polyhedral surface which is not closed, or has holes. The inside of `bounding_polyhedron` will be meshed.

## ◆ Polyhedral_mesh_domain_3() [3/4]

template<class Polyhedron , class IGT >
template<typename InputPolyhedraPtrIterator >

CGAL::Polyhedral_mesh_domain_3< Polyhedron, IGT >::Polyhedral_mesh_domain_3 | ( | InputPolyhedraPtrIterator | begin,
|  | InputPolyhedraPtrIterator | end,
|  | const Polyhedron & | bounding_polyhedron
| ) |  |

Constructor from a sequence of polyhedral surfaces, and a bounding polyhedral surface.

Template Parameters

  InputPolyhedraPtrIterator | must be a model of `ForwardIterator` and value type `Polyhedron*`

Parameters

  begin | iterator for a sequence of pointers to polyhedra
  end | iterator for a sequence of pointers to polyhedra
  bounding_polyhedron | the bounding surface

## ◆ Polyhedral_mesh_domain_3() [4/4]

template<class Polyhedron , class IGT >
template<typename InputPolyhedraPtrIterator >

CGAL::Polyhedral_mesh_domain_3< Polyhedron, IGT >::Polyhedral_mesh_domain_3 | ( | InputPolyhedraPtrIterator | begin,
|  | InputPolyhedraPtrIterator | end
| ) |  |

Constructor from a sequence of polyhedral surfaces, without a bounding surface.

The domain will always answer `false` to `is_in_domain()` queries.

Template Parameters

  InputPolyhedraPtrIterator | must be a model of `ForwardIterator` and value type `Polyhedron*`

Parameters

  begin | iterator for a sequence of pointers to polyhedra
  end | iterator for a sequence of pointers to polyhedra