Skip to content

Commit

Permalink
Fixes for vertex/cell classes of SMDS_3 and Tetrahedral_remeshing (#7610
Browse files Browse the repository at this point in the history
)

## Summary of Changes

The main point of this PR is to restore the API of
`Remeshing_cell_base_3` to the initial state (since CGAL 5.1), which was
changed with the introduction of SMDS_3 in CGAL 5.6
(#5693).

In CGAL 5.5, the class `Remeshing_cell_base_3` is templated by a geom
traits and a cell base.
In CGAL 5.6, the class became templated by only two index types,
removing the possibility to derive from custom (TDS) base cell types.

Also:
- Decompactify Simplicial_cell_base_3, allowing a cell base to be used
- Changed the API of Remeshing_vertex_base_3 to match that of
Remeshing_cell_base_3 (and other CGAL triangulations): a Gt and a Vb
- Proper rebind mechanism for VB/CB of SMDS_3 / Tetrahedral remeshing
- Various fixes of the SMDS_3 / Tetrahedral_remeshing doc.

TODO:
- [x] Announce the breaking changes in CHANGES.md
- [x] Introduce Compact_simplicial_cell_base_3?

## Release Management

* Affected package(s): `SMDS_3`, `Tetrahedral_remeshing`
* Issue(s) solved (if any): -
* Feature/Small Feature (if any): n/a
* License and copyright ownership: no change
  • Loading branch information
lrineau authored Sep 13, 2023
2 parents 1870033 + cb68fdf commit 3a54848
Show file tree
Hide file tree
Showing 13 changed files with 679 additions and 441 deletions.
12 changes: 12 additions & 0 deletions Installation/CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,18 @@ Release date: October 2023
- Removed the class templates `Gray_image_mesh_domain_3`, `Implicit_mesh_domain_3`, and `Labeled_image_mesh_domain_3`
which are deprecated since CGAL-4.13.

### [Tetrahedral Remeshing](https://doc.cgal.org/6.0/Manual/packages.html#PkgTetrahedralRemeshing)
- **Breaking change**: The template parameters of
`CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3`
have been modified, reverting changes introduced in CGAL 5.6.
- **Breaking change**: The vertex base of
`CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3`
must now be a model of the concept ` SimplicialMeshVertexBase_3` (and not only `TriangulationVertexBase_3`).

### [3D Simplicial Mesh Data Structure](https://doc.cgal.org/6.0/Manual/packages.html#PkgSMDS3)
- **Breaking change**: The template parameters of
`CGAL::Simplicial_mesh_cell_base_3`
have been modified to enable passing a geometric traits and a custom cell base class.

[Release 5.6](https://github.com/CGAL/cgal/releases/tag/v5.6)
-----------
Expand Down
14 changes: 6 additions & 8 deletions SMDS_3/doc/SMDS_3/Concepts/SimplicialMeshCellBase_3.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
The concept `SimplicialMeshCellBase_3` describes the requirements
for the `TriangulationDataStructure_3::Cell` type of the triangulation
used in the 3D simplicial mesh data structure. The type `SimplicialMeshCellBase_3`
refines the concept `TriangulationCellBase_3`
and must be copy constructible.
The concept `SimplicialMeshCellBase_3`
includes a way to store and retrieve
if a given cell of the triangulation is inside a subdomain or not,
and which subdomain it belongs to
in case of a multi-domain.
used in a 3D simplicial mesh data structure.
The type `SimplicialMeshCellBase_3` refines the concept `TriangulationCellBase_3`
and must be copy constructible. The concept `SimplicialMeshCellBase_3` includes a way to store and
retrieve if a given cell of the triangulation is inside a subdomain or not, and which subdomain it
belongs to in case of a multi-domain.
Moreover, this concept adds four markers per cell to mark the facets
of the triangulation that are surface facets.
Expand Down
2 changes: 1 addition & 1 deletion SMDS_3/doc/SMDS_3/Concepts/SimplicialMeshVertexBase_3.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
The concept `SimplicialMeshVertexBase_3` describes the requirements
for the `Vertex` type of the triangulation
used in the 3D simplicial mesh data structure. The type `SimplicialMeshVertexBase_3`
used in a 3D simplicial mesh data structure. The type `SimplicialMeshVertexBase_3`
refines the concept `TriangulationVertexBase_3`.
It provides additional members to store and retrieve
information about the location of the vertex with respect
Expand Down
2 changes: 1 addition & 1 deletion SMDS_3/examples/SMDS_3/c3t3_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ using Surface_patch_index = unsigned char;
using Curve_index = char;
using Corner_index = short;

using Cb = CGAL::Simplicial_mesh_cell_base_3<Subdomain_index, Surface_patch_index>;
using Cb = CGAL::Simplicial_mesh_cell_base_3<K, Subdomain_index, Surface_patch_index>;
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
Curve_index, Corner_index>;

Expand Down
Loading

0 comments on commit 3a54848

Please sign in to comment.