mirror of https://github.com/CGAL/cgal
108 lines
2.8 KiB
C++
108 lines
2.8 KiB
C++
|
|
/*!
|
|
\ingroup PkgSurfaceMesher3Concepts
|
|
\cgalConcept
|
|
|
|
The concept `SurfaceMeshCellBase_3` describes the cell base type
|
|
of the three dimensional triangulation used
|
|
to embed the surface mesh.
|
|
|
|
More precisely,
|
|
the first template parameter `SurfaceMeshC2T3` of the function template
|
|
`CGAL::make_surface_mesh()`
|
|
is a model of the concept
|
|
`SurfaceMeshComplex_2InTriangulation_3`
|
|
which describes a data structure to store
|
|
a pure two dimensional complex
|
|
embedded in a three dimensional triangulation.
|
|
In particular, the type `SurfaceMeshC2T3` is required to provide
|
|
a three dimensional triangulation type
|
|
`SurfaceMeshC2T3::Triangulation_3`.
|
|
The concept `SurfaceMeshCellBase_3` describes the cell base type
|
|
required in this triangulation type.
|
|
|
|
\cgalRefines{DelaunayTriangulationCellBase_3}
|
|
|
|
The concept `SurfaceMeshCellBase_3` adds four markers to mark
|
|
the facets of the triangulation that belong to the two dimensional
|
|
complex, and four markers that are helpers used in some operations to
|
|
mark for instance the facets that have been visited.
|
|
<br>
|
|
This concept also provides storage for the center of a
|
|
Delaunay surface ball. Given a surface and a 3D Delaunay
|
|
triangulation, a Delaunay surface ball is a ball circumscribed to a
|
|
facet of the triangulation and centered on the surface and empty of
|
|
triangulation vertices. Such a ball does exist when the facet is part
|
|
of the restriction to the surface of a three dimensional
|
|
triangulation. In the following we call surface center of a facet,
|
|
the center of its biggest Delaunay surface ball.
|
|
|
|
\cgalHasModelsBegin
|
|
\cgalHasModels{CGAL::Surface_mesh_cell_base_3<Gt,Vb>}
|
|
\cgalHasModels{CGAL::Surface_mesh_default_triangulation_3::Cell}
|
|
\cgalHasModelsEnd
|
|
|
|
\sa `SurfaceMeshTriangulation_3`
|
|
\sa `SurfaceMeshComplex_2InTriangulation_3`
|
|
\sa `CGAL::Surface_mesh_complex_2_in_triangulation_3<Tr>`
|
|
\sa `CGAL::Surface_mesh_default_triangulation_3`
|
|
\sa `CGAL::make_surface_mesh()`
|
|
|
|
*/
|
|
|
|
class SurfaceMeshCellBase_3 {
|
|
public:
|
|
|
|
/// \name Types
|
|
/// @{
|
|
|
|
/*!
|
|
The point type, required to match the point type
|
|
of the three dimensional
|
|
triangulation in which the surface mesh is embedded.
|
|
*/
|
|
typedef unspecified_type Point;
|
|
|
|
/// @}
|
|
|
|
/// \name Operations
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, if `facet(i)` is in the 2D complex.
|
|
*/
|
|
bool is_facet_on_surface(int i);
|
|
|
|
/*!
|
|
Sets `facet(i)` as part of the 2D complex, if `b` is `true`,
|
|
and `NOT_IN_COMPLEX`, otherwise.
|
|
*/
|
|
void set_facet_on_surface(int i, bool b );
|
|
|
|
/*!
|
|
Returns `true`, if `facet(i)` has been visited,
|
|
`false` otherwise.
|
|
*/
|
|
bool is_facet_visited (int i);
|
|
|
|
/*!
|
|
Marks `facet(i)` as visited, if `b` is `true`,
|
|
and non visited otherwise.
|
|
*/
|
|
void set_facet_visited (int i, bool b);
|
|
|
|
/*!
|
|
Returns a const reference to the surface center of `facet(i)`.
|
|
*/
|
|
const Point& get_facet_surface_center(int i);
|
|
|
|
/*!
|
|
Sets point `p` as the surface center of `facet(i)`.
|
|
*/
|
|
void set_facet_surface_center (int i, Point p);
|
|
|
|
/// @}
|
|
|
|
}; /* end SurfaceMeshCellBase_3 */
|
|
|