CGAL 6.0 - 3D Isosurfacing
Loading...
Searching...
No Matches
IsosurfacingDomain_3 Concept Reference

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 position 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

A descriptor that uniquely identifies a cell.

Must be a model of the concepts Descriptor and Hashable.

◆ 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

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

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

A descriptor that uniquely identifies an edge.

Must be a model of the concept Descriptor and Hashable.

◆ 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

The geometric traits type.

Must be a model of IsosurfacingTraits_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_0the geometric position of the first vertex of the edge
p_1the geometric position of the second vertex of the edge
val_0the value at the first vertex of the edge
val_1the value at the second vertex of the edge
isovaluethe isovalue defining the isosurface with which we seek an intersection
pthe 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
ConcurrencyTagdecides if the cells are iterated sequentially or in parallel. Can be either CGAL::Sequential_tag, CGAL::Parallel_if_available_tag, or CGAL::Parallel_tag.
Functormust implement void operator()(cell_descriptor cell).
Parameters
fthe 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
ConcurrencyTagdecides if the edges are iterated sequentially or in parallel. Can be either CGAL::Sequential_tag, CGAL::Parallel_if_available_tag, or CGAL::Parallel_tag.
Functormust implement void operator()(edge_descriptor edge).
Parameters
fthe 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
ConcurrencyTagdecides if the vertices are iterated sequentially or in parallel. Can be either CGAL::Sequential_tag, CGAL::Parallel_if_available_tag, or CGAL::Parallel_tag.
Functormust implement void operator()(vertex_descriptor vertex)
Parameters
fthe functor called on every vertex

#include <Concepts/IsosurfacingDomain_3.h>

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 position 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

A descriptor that uniquely identifies a cell.

Must be a model of the concepts Descriptor and Hashable.

◆ 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

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

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

A descriptor that uniquely identifies an edge.

Must be a model of the concept Descriptor and Hashable.

◆ 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

The geometric traits type.

Must be a model of IsosurfacingTraits_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_0the geometric position of the first vertex of the edge
p_1the geometric position of the second vertex of the edge
val_0the value at the first vertex of the edge
val_1the value at the second vertex of the edge
isovaluethe isovalue defining the isosurface with which we seek an intersection
pthe 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
ConcurrencyTagdecides if the cells are iterated sequentially or in parallel. Can be either CGAL::Sequential_tag, CGAL::Parallel_if_available_tag, or CGAL::Parallel_tag.
Functormust implement void operator()(cell_descriptor cell).
Parameters
fthe 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
ConcurrencyTagdecides if the edges are iterated sequentially or in parallel. Can be either CGAL::Sequential_tag, CGAL::Parallel_if_available_tag, or CGAL::Parallel_tag.
Functormust implement void operator()(edge_descriptor edge).
Parameters
fthe 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
ConcurrencyTagdecides if the vertices are iterated sequentially or in parallel. Can be either CGAL::Sequential_tag, CGAL::Parallel_if_available_tag, or CGAL::Parallel_tag.
Functormust implement void operator()(vertex_descriptor vertex)
Parameters
fthe functor called on every vertex