CGAL 6.1 - Advancing Front Surface Reconstruction

Loading...
Searching...
No Matches
List of all members
CGAL::Advancing_front_surface_reconstruction< Dt, P > Class Template Reference
Reference Manual

`#include <CGAL/Advancing_front_surface_reconstruction.h>`

## Definition

template<class Dt = Default, class P = Default>
class CGAL::Advancing_front_surface_reconstruction< Dt, P >

The class `Advancing_front_surface_reconstruction` enables advanced users to provide the unstructured point cloud in a 3D Delaunay triangulation.

The reconstruction algorithm then marks vertices and faces in the triangulation as being on the 2D surface embedded in 3D space, and constructs a 2D triangulation data structure that describes the surface. The vertices and facets of the 2D triangulation data structure store handles to the vertices and faces of the 3D triangulation, which enables the user to explore the 2D as well as 3D neighborhood of vertices and facets of the surface.

Template Parameters

  Dt | must be a `Delaunay_triangulation_3` whose `Traits` template parameter must be a model of `AdvancingFrontSurfaceReconstructionTraits_3` and whose `Tds` template parameter must be a model of `TriangulationDataStructure_3` with `Advancing_front_surface_reconstruction_vertex_base_3` and `Advancing_front_surface_reconstruction_cell_base_3` blended into the vertex and cell type, respectively. The default value is: CGAL::Delaunay_triangulation_3<CGAL::Exact_predicates_inexact_constructions_kernel, CGAL::Triangulation_data_structure_3< CGAL::Advancing_front_surface_reconstruction_vertex_base_3< CGAL::Exact_predicates_inexact_constructions_kernel>, CGAL::Advancing_front_surface_reconstruction_cell_base_3< CGAL::Exact_predicates_inexact_constructions_kernel> > > CGAL::Advancing_front_surface_reconstruction_cell_base_3 The class Advancing_front_surface_reconstruction_cell_base_3 is the default cell type for the class A... Definition: Advancing_front_surface_reconstruction_cell_base_3.h:33 CGAL::Advancing_front_surface_reconstruction_vertex_base_3 The class Advancing_front_surface_reconstruction_vertex_base_3 is the default vertex type for the cla... Definition: Advancing_front_surface_reconstruction_vertex_base_3.h:43 CGAL::Delaunay_triangulation_3 CGAL::Exact_predicates_inexact_constructions_kernel CGAL::Triangulation_data_structure_3
  P | must be a functor offering FT operator()(Advancing_front_surface_reconstruction::Cell_handle,int) CGAL::Advancing_front_surface_reconstruction::FT Triangulation_3::Geom_traits::FT FT The number type. Definition: Advancing_front_surface_reconstruction.h:247 CGAL::Advancing_front_surface_reconstruction::Cell_handle Triangulation_3::Cell_handle Cell_handle The cell handle type of the 3D triangulation. Definition: Advancing_front_surface_reconstruction.h:262 returning the priority of the facet `(Cell_handle,int)`. This functor enables the user to choose how candidate triangles are prioritized. If a facet should not appear in the output, `infinity()` must be returned. It defaults to a functor that returns the `smallest_radius_delaunay_sphere()`.

Examples
  Advancing_front_surface_reconstruction/boundaries.cpp, Advancing_front_surface_reconstruction/reconstruction_class.cpp, and Advancing_front_surface_reconstruction/reconstruction_structured.cpp.

## Types
typedef unspecified_type | Triangulation_data_structure_2
| The type of the 2D triangulation data structure describing the reconstructed surface, being a model of `TriangulationDataStructure_2`.
typedef unspecified_type | Triangulation_3
| The type of the 3D Delaunay triangulation (the first template parameter).
typedef unspecified_type | Priority
| The type of the facet priority functor (the second template parameter).
typedef Triangulation_3::Geom_traits::FT | FT
| The number type.
typedef Triangulation_3::Point | Point
| The point type.
typedef Triangulation_3::Vertex_handle | Vertex_handle
| The vertex handle type of the 3D triangulation.
typedef Triangulation_3::Cell_handle | Cell_handle
| The cell handle type of the 3D triangulation.
typedef Triangulation_3::Facet | Facet
| The facet type of the 3D triangulation.
typedef unspecified_type | Outlier_range
| A bidirectional iterator range which enables to enumerate all points that were removed from the 3D Delaunay triangulation during the surface reconstruction.
typedef unspecified_type | Vertex_on_boundary_range
| A bidirectional iterator range which enables to visit all vertices on a boundary.
typedef unspecified_type | Boundary_range
| A bidirectional iterator range which enables to visit all boundaries.

## Creation
| Advancing_front_surface_reconstruction (Triangulation_3 &dt, Priority priority=Priority())
| Constructor for the unstructured point cloud given as 3D Delaunay triangulation.

## Operations
void | run (double radius_ratio_bound=5, double beta=0.52)
| runs the surface reconstruction function.
const Triangulation_data_structure_2 & | triangulation_data_structure_2 () const
| returns the reconstructed surface.
Triangulation_3 & | triangulation_3 () const
| returns the underlying 3D Delaunay triangulation.
const Outlier_range & | outliers () const
| returns an iterator range over the outliers.
const Boundary_range & | boundaries () const
| returns an iterator range over the boundaries.

## Predicates
bool | has_boundaries () const
| returns `true` if the reconstructed surface has boundaries.
bool | has_on_surface (Facet f) const
| returns `true` if the facet is on the surface.
bool | has_on_surface (typename Triangulation_data_structure_2::Face_handle f2) const
| returns `true` if the facet `f2` is on the surface.
bool | has_on_surface (typename Triangulation_data_structure_2::Vertex_handle v2) const
| returns `true` if the vertex `v2` is on the surface.

## Priority values
FT | smallest_radius_delaunay_sphere (const Cell_handle &c, const int &index) const
| computes the priority of the facet `(c,index)` such that the facet with the smallest radius of Delaunay sphere has the highest priority.
FT | infinity () const
| returns the infinite floating value that prevents a facet to be used.

## Member Typedef Documentation

## ◆ Boundary_range

template<class Dt = Default, class P = Default>

typedef unspecified_type CGAL::Advancing_front_surface_reconstruction< Dt, P >::Boundary_range

A bidirectional iterator range which enables to visit all boundaries.

The value type of the iterator is `Vertex_on_boundary_range`.

## ◆ Outlier_range

template<class Dt = Default, class P = Default>

typedef unspecified_type CGAL::Advancing_front_surface_reconstruction< Dt, P >::Outlier_range

A bidirectional iterator range which enables to enumerate all points that were removed from the 3D Delaunay triangulation during the surface reconstruction.

The value type of the iterator is `Point`.

## ◆ Triangulation_data_structure_2

template<class Dt = Default, class P = Default>

typedef unspecified_type CGAL::Advancing_front_surface_reconstruction< Dt, P >::Triangulation_data_structure_2

The type of the 2D triangulation data structure describing the reconstructed surface, being a model of `TriangulationDataStructure_2`.

- The type `Triangulation_data_structure_2::Vertex` is model of the concept `TriangulationDataStructure_2::Vertex` and has additionally the method `vertex_3()` that returns a `Vertex_handle` to the associated 3D vertex.
- The type `Triangulation_data_structure_2::Face` is model of the concept `TriangulationDataStructure_2::Face` and has additionally the method `facet()` that returns the associated `Facet`, and a method `bool is_on_surface()` for testing if a face is part of the reconstructed surface or a face incident to a boundary edge.

In case the surface has boundaries, the 2D surface has one vertex which is associated to the infinite vertex of the 3D triangulation.

## ◆ Vertex_on_boundary_range

template<class Dt = Default, class P = Default>

typedef unspecified_type CGAL::Advancing_front_surface_reconstruction< Dt, P >::Vertex_on_boundary_range

A bidirectional iterator range which enables to visit all vertices on a boundary.

The value type of the iterator is `Vertex_handle`.

## Member Function Documentation

## ◆ run()

template<class Dt = Default, class P = Default>

void CGAL::Advancing_front_surface_reconstruction< Dt, P >::run | ( | double | radius_ratio_bound = `5`,
|  | double | beta = `0.52`
| ) |  |

runs the surface reconstruction function.

Parameters

  radius_ratio_bound | candidates incident to surface triangles which are not in the beta-wedge are discarded, if the ratio of their radius and the radius of the surface triangle is larger than `radius_ratio_bound`. Described in Section Dealing with Multiple Components, Boundaries and Sharp Edges.
  beta | half the angle of the wedge in which only the radius of triangles counts for the plausibility of candidates. Described in Section Plausibility of a Candidate Triangle.

## ◆ smallest_radius_delaunay_sphere()

template<class Dt = Default, class P = Default>

FT CGAL::Advancing_front_surface_reconstruction< Dt, P >::smallest_radius_delaunay_sphere | ( | const Cell_handle & | c,
|  | const int & | index
| ) |  | const

computes the priority of the facet `(c,index)` such that the facet with the smallest radius of Delaunay sphere has the highest priority.

Parameters

  c | handle to the cell containing the facet
  index | index of the facet in `c`