CGAL 6.1.2 - 3D Isosurfacing: IsosurfacingDomain_3 Concept Reference

CGAL 6.1.2 - 3D Isosurfacing

Loading...
Searching...
No Matches
List of all members
IsosurfacingDomain_3 Concept Reference
Reference Manual » Concepts

## Definition

The concept `IsosurfacingDomain_3` describes the set of requirements to be fulfilled by any class used as input data for isosurfacing algorithms.

A model of the concept `IsosurfacingDomain_3` provides a partition of the Euclidean space in cells, and a scalar field defined over the whole partition. The isosurfacing algorithms traverse these cells and query the domain class at the vertices of each cell, using the functions `point()` and `value()`.

Has models
  `CGAL::Isosurfacing::Marching_cubes_domain_3`
  `CGAL::Isosurfacing::Dual_contouring_domain_3`

See also
  `IsosurfacingDomainWithGradient_3`

## Types
typedef unspecified_type | Geom_traits
| The geometric traits type.
typedef Geom_traits::FT | FT
| The scalar type.
typedef Geom_traits::Point_3 | Point_3
| The 3D point type.
typedef unspecified_type | vertex_descriptor
| A descriptor that uniquely identifies a vertex.
typedef unspecified_type | edge_descriptor
| A descriptor that uniquely identifies an edge.
typedef unspecified_type | cell_descriptor
| A descriptor that uniquely identifies a cell.
typedef unspecified_type | Edge_vertices
| A container for the two vertices of an edge.
typedef unspecified_type | Cells_incident_to_edge
| A container for the cells incident to an edge.
typedef unspecified_type | Cell_vertices
| A container for the vertices of a cell.
typedef unspecified_type | Cell_edges
| A container for the edges of a cell.

## Operations
Geom_traits | geom_traits ()
| returns the geometric traits.
Point_3 | point (vertex_descriptor v) const
| returns the 3D location of the vertex `v`.
FT | value (Point_3 p) const
| returns the value of the value field at the point `p`.
FT | value (vertex_descriptor v) const
| returns the value of the value field at the vertex `v`.
Edge_vertices | incident_vertices (edge_descriptor e) const
| returns the two vertices incident to the edge `e`.
Cells_incident_to_edge | incident_cells (edge_descriptor e) const
| returns all the cells incident to the edge `e`, in a clockwise or counterclockwise order.
Cell_vertices | cell_vertices (cell_descriptor c) const
| returns all the vertices of the cell `c`.
Cell_edges | cell_edges (cell_descriptor c) const
| returns all the edges of the cell `c`.
template<typename ConcurrencyTag , typename Functor >
void | for_each_vertex (Functor &f) const
| iterates over all vertices, and calls the functor `f` on each one.
template<typename ConcurrencyTag , typename Functor >
void | for_each_edge (Functor &f) const
| iterates over all edges, and calls the functor `f` on each one.
template<typename ConcurrencyTag , typename Functor >
void | for_each_cell (Functor &f) const
| iterates over all cells, and calls the functor `f` on each one.
bool | construct_intersection (Point_3 p_0, Point_3 p_1, FT val_0, FT val_1, FT isovalue, Point_3 &p) const
| Constructs the intersection - if it exists - between an edge and an isosurface.

## Member Typedef Documentation

## ◆ cell_descriptor

typedef unspecified_type IsosurfacingDomain_3::cell_descriptor

A descriptor that uniquely identifies a cell.

Must be a model of the concepts `Descriptor` and `Hashable`.

## ◆ Cell_edges

typedef unspecified_type IsosurfacingDomain_3::Cell_edges

A container for the edges of a cell.

Must be a model of the concept `ForwardRange` whose value type is `edge_descriptor`.

## ◆ Cell_vertices

typedef unspecified_type IsosurfacingDomain_3::Cell_vertices

A container for the vertices of a cell.

Must be a model of the concept `ForwardRange` whose value type is `vertex_descriptor`.

## ◆ Cells_incident_to_edge

typedef unspecified_type IsosurfacingDomain_3::Cells_incident_to_edge

A container for the cells incident to an edge.

Must be a model of the concept `ForwardRange` whose value type is `cell_descriptor`.

## ◆ edge_descriptor

typedef unspecified_type IsosurfacingDomain_3::edge_descriptor

A descriptor that uniquely identifies an edge.

Must be a model of the concept `Descriptor` and `Hashable`.

## ◆ Edge_vertices

typedef unspecified_type IsosurfacingDomain_3::Edge_vertices

A container for the two vertices of an edge.

Must be a model of the concept `RandomAccessContainer` of size `2` whose value type is `vertex_descriptor`.

## ◆ Geom_traits

typedef unspecified_type IsosurfacingDomain_3::Geom_traits

The geometric traits type.

Must be a model of `IsosurfacingTraits_3`.

## ◆ vertex_descriptor

typedef unspecified_type IsosurfacingDomain_3::vertex_descriptor

A descriptor that uniquely identifies a vertex.

Must be a model of the concepts `Descriptor` and `Hashable`.

## Member Function Documentation

## ◆ construct_intersection()

bool IsosurfacingDomain_3::construct_intersection | ( | Point_3 | p_0,
|  | Point_3 | p_1,
|  | FT | val_0,
|  | FT | val_1,
|  | FT | isovalue,
|  | Point_3 & | p
| ) |  | const

Constructs the intersection - if it exists - between an edge and an isosurface.

Parameters

  p_0 | the location of the first vertex of the edge
  p_1 | the location of the second vertex of the edge
  val_0 | the value at the first vertex of the edge
  val_1 | the value at the second vertex of the edge
  isovalue | the isovalue defining the isosurface with which we seek an intersection
  p | the intersection point, if it exists

Returns
  `true` if the intersection point exists, `false` otherwise.

## ◆ for_each_cell()

template<typename ConcurrencyTag , typename Functor >

void IsosurfacingDomain_3::for_each_cell | ( | Functor & | f | ) | const

iterates over all cells, and calls the functor `f` on each one.

Template Parameters

  ConcurrencyTag | decides if the cells are iterated sequentially or in parallel. Can be either `CGAL::Sequential_tag`, `CGAL::Parallel_if_available_tag`, or `CGAL::Parallel_tag`.
  Functor | must implement `void operator()(cell_descriptor cell)`.

Parameters

  f | the functor called on every cell

## ◆ for_each_edge()

template<typename ConcurrencyTag , typename Functor >

void IsosurfacingDomain_3::for_each_edge | ( | Functor & | f | ) | const

iterates over all edges, and calls the functor `f` on each one.

Template Parameters

  ConcurrencyTag | decides if the edges are iterated sequentially or in parallel. Can be either `CGAL::Sequential_tag`, `CGAL::Parallel_if_available_tag`, or `CGAL::Parallel_tag`.
  Functor | must implement `void operator()(edge_descriptor edge)`.

Parameters

  f | the functor called on every edge

## ◆ for_each_vertex()

template<typename ConcurrencyTag , typename Functor >

void IsosurfacingDomain_3::for_each_vertex | ( | Functor & | f | ) | const

iterates over all vertices, and calls the functor `f` on each one.

Template Parameters

  ConcurrencyTag | decides if the vertices are iterated sequentially or in parallel. Can be either `CGAL::Sequential_tag`, `CGAL::Parallel_if_available_tag`, or `CGAL::Parallel_tag`.
  Functor | must implement `void operator()(vertex_descriptor vertex)`

Parameters

  f | the functor called on every vertex