wip simplicial Cb and Vb

This commit is contained in:
Jane Tournois 2022-03-24 15:29:53 +01:00
parent 8c5fe5fd0e
commit 43e96bfe2a
9 changed files with 51 additions and 67 deletions

View File

@ -36,35 +36,17 @@ public:
/// @{
/*!
The bare point type, required to match the `Point_3` type
of the 3D triangulation traits in which the mesh is embedded.
*/
typedef unspecified_type Point_3;
/*!
The point type, required to match the `Point` type
of the 3D triangulation in which the mesh is embedded.
*/
typedef unspecified_type Point;
/*!
Type of indices for cells of the input complex.
Type of indices for cells of the mesh complex.
Must match the type `MeshDomain_3::Subdomain_index` in the context of mesh generation.
*/
typedef unspecified_type Subdomain_index;
/*!
Type of indices for surface patches of the input complex.
Type of indices for surface patches of the mesh complex.
Must match the type `MeshDomain_3::Surface_patch_index` in the context of mesh generation.
*/
typedef unspecified_type Surface_patch_index;
/*!
Type of indices to be stored at mesh vertices to characterize the lowest dimensional face
of the input complex on which a possible future Steiner vertex lies.
Must match the type `MeshDomain_3::Index` in the context of mesh generation.
*/
typedef unspecified_type Index;
/// @}

View File

@ -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<K, Subdomain_index, Surface_patch_index>;
using Cb = CGAL::Simplicial_mesh_cell_base_3<Subdomain_index, Surface_patch_index>;
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
Curve_index, Corner_index>;

View File

@ -143,12 +143,12 @@ namespace CGAL {
\tparam CurveIndex Type of indices for curves (i.e. \f$ 1\f$-dimensional features)
of the discretized geometric domain.
It must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible` and
`LessThanComparable`. The default constructed value must be the value of an edge which
`LessThanComparable`. The default constructed value must be the value for an edge which
does not approximate a 1-dimensional feature of the geometric domain.
It must match the `Curve_index` types of the model
of the `MeshDomainWithFeatures_3` concept when used for mesh generation.
Those two last template parameters defaults to `int`, so that they can be ignored
Those two last template parameters default to `int`, so that they can be ignored
if the domain used for mesh generation does not include 0 and 1-dimensionnal features (i.e
is a model of the concept `MeshDomain_3`).

View File

@ -29,8 +29,6 @@
#include <CGAL/Triangulation_cell_base_3.h>
#include <CGAL/SMDS_3/io_signature.h>
#include <boost/variant.hpp>
#ifdef CGAL_LINKED_WITH_TBB
# include <atomic>
#endif
@ -40,8 +38,7 @@ namespace CGAL {
// Class Simplicial_mesh_cell_3
// Cell base class used for tetrahedral remeshing
// Adds information to Cb about the cell of the input complex containing it
template< class Point_3,
class Subdomain_index_,
template< class Subdomain_index_,
class Surface_patch_index_,
class TDS>
class Simplicial_mesh_cell_3
@ -57,7 +54,6 @@ public:
// Index Type
using Subdomain_index = Subdomain_index_;
using Surface_patch_index = Surface_patch_index_;
using Index = boost::variant<Subdomain_index, Surface_patch_index>;
public:
// Constructors
@ -286,10 +282,8 @@ public:
static
std::string io_signature()
{
using Geom_traits = typename Kernel_traits<Point_3>::type;
return
Get_io_signature<Subdomain_index>()() + "+" +
Get_io_signature<Triangulation_cell_base_3<Geom_traits> >()()
Get_io_signature<Subdomain_index>()()
+ "+(" + Get_io_signature<Surface_patch_index>()() + ")[4]";
}
@ -379,9 +373,6 @@ It is designed to serve as cell base class for.3D simplicial mesh data structure
It stores and gives access to data about the complex the cell belongs to, such as the
subdomain it belongs to or surface it takes part to.
\tparam Gt is the geometric traits class.
It must be a model of the concept `RemeshingTriangulationTraits_3`
\tparam Subdomain_index Type of indices for subdomains of the discretized geometric domain.
Must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible`
and `EqualityComparable`. The default constructed value must match the label
@ -405,21 +396,19 @@ default parameter value `void`.
\cgalModels `SimplicialMeshCellBase_3`
\sa `CGAL::Mesh_complex_3_in_triangulation_3<Tr,CornerIndex,CurveIndex>`
\sa `CGAL::Mesh_cell_base_3`
\sa \link Mesh_cell_base_3 `CGAL::Mesh_cell_base_3`\endlink
\sa `MeshDomain_3`
\sa `MeshDomainWithFeatures_3`
*/
template< class Gt,
typename Subdomain_index,
template< typename Subdomain_index,
typename Surface_patch_index,
class TDS = void >
class Simplicial_mesh_cell_base_3;
// Specialization for void.
template <typename Gt,
typename Subdomain_index,
template <typename Subdomain_index,
typename Surface_patch_index>
class Simplicial_mesh_cell_base_3<Gt, Subdomain_index, Surface_patch_index, void>
class Simplicial_mesh_cell_base_3<Subdomain_index, Surface_patch_index, void>
{
public:
typedef internal::Dummy_tds_3 Triangulation_data_structure;
@ -429,8 +418,7 @@ public:
template <typename TDS2>
struct Rebind_TDS
{
typedef Simplicial_mesh_cell_3<typename Gt::Point_3,
Subdomain_index,
typedef Simplicial_mesh_cell_3<Subdomain_index,
Surface_patch_index,
TDS2> Other;
};

View File

@ -199,7 +199,7 @@ public:
v.index());
return os;
}
}; // end class Mesh_vertex_3
}; // end class Simplicial_mesh_vertex_3
/*!
@ -212,7 +212,37 @@ It stores and gives access to data about the complex the vertex belongs to, such
index of the subcomplex it belongs to.
\tparam Gt is the geometric traits class.
It must be a model of the concept `RemeshingTriangulationTraits_3`
It must be a model of the concept `TriangulationTraits_3`
\tparam Subdomain_index Type of indices for subdomains of the discretized geometric domain.
Must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible`
and `EqualityComparable`. The default constructed value must match the label
of the exterior of the domain (which contains at least the unbounded component).
It must match the `Subdomain_index` of the model
of the `MeshDomain_3` concept when used for mesh generation.
\tparam Surface_patch_index Type of indices for surface patches (boundaries and interfaces)
of the discretized geometric domain.
Must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible`
and `EqualityComparable`. The default constructed value must be the index value
assigned to a non surface facet.
It must match the `Surface_patch_index` of the model
of the `MeshDomain_3` concept when used for mesh generation.
\tparam Curve_index Type of indices for curves (i.e. \f$ 1\f$-dimensional features)
of the discretized geometric domain.
Must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible` and
`LessThanComparable`. The default constructed value must be the value for an edge which
does not approximate a 1-dimensional feature of the geometric domain.
It must match the `Curve_index` types of the model
of the `MeshDomainWithFeatures_3` concept when used for mesh generation.
\tparam Corner_index Type of indices for corners (i.e.\f$ 0\f$--dimensional features)
of the discretized geometric domain.
It must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible` and
`LessThanComparable`.
It must match the `Corner_index` of the model
of the `MeshDomainWithFeatures_3` concept when used for mesh generation.
\tparam Vb is the vertex base class. It has to be a model
of the concept `TriangulationVertexBase_3` and defaults to
@ -221,7 +251,7 @@ of the concept `TriangulationVertexBase_3` and defaults to
\cgalModels `SimplicialMeshVertexBase_3`
\sa `CGAL::Mesh_complex_3_in_triangulation_3`
\sa `CGAL::Mesh_vertex_base_3`
\sa \link Mesh_vertex_base_3 `CGAL::Mesh_vertex_base_3`\endlink
\sa `MeshDomain_3`
\sa `MeshDomainWithFeatures_3`
*/

View File

@ -19,7 +19,7 @@ using Surface_patch_index = std::pair<int, int>;
using Curve_index = char;
using Corner_index = short;
using Cb = CGAL::Simplicial_mesh_cell_base_3<K, Subdomain_index, Surface_patch_index>;
using Cb = CGAL::Simplicial_mesh_cell_base_3<Subdomain_index, Surface_patch_index>;
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
Curve_index, Corner_index>;

View File

@ -21,15 +21,6 @@ namespace CGAL
{
namespace Tetrahedral_remeshing
{
namespace internal
{
struct Fake_MD_C
{
typedef int Subdomain_index;
typedef int Surface_patch_index;
typedef int Index;
};
}
/*!
\ingroup PkgTetrahedralRemeshingClasses
@ -38,23 +29,16 @@ The class `Remeshing_cell_base_3` is a model of the concept `MeshCellBase_3`.
It is designed to serve as cell base class for the 3D triangulation
used in the tetrahedral remeshing process.
\tparam Gt is the geometric traits class.
It has to be a model of the concept `RemeshingTriangulationTraits_3`.
\tparam Cb is a cell base class from which `Remeshing_cell_base_3` derives.
It must be a model of the `TriangulationCellBase_3` concept.
It has the default value `Triangulation_cell_base_3<Gt>`.
\todo indices
\cgalModels `SimplicialMeshCellBase_3`
*/
template<typename Gt,
typename Subdomain_index = int,
template<typename Subdomain_index = int,
typename Surface_patch_index = int,
typename TDS = void>
using Remeshing_cell_base_3
= CGAL::Simplicial_mesh_cell_base_3<Gt,
Subdomain_index,
= CGAL::Simplicial_mesh_cell_base_3<Subdomain_index,
Surface_patch_index,
TDS>;

View File

@ -58,7 +58,7 @@ and `Parallel_if_available_tag`.
template<typename Gt,
typename Concurrency_tag = CGAL::Sequential_tag,
typename Vb = Remeshing_vertex_base_3<Gt>,
typename Cb = Remeshing_cell_base_3<Gt>
typename Cb = Remeshing_cell_base_3<>
>
class Remeshing_triangulation_3
: public CGAL::Triangulation_3<Gt, CGAL::Triangulation_data_structure_3<Vb,Cb> >

View File

@ -17,7 +17,7 @@ using Surface_patch_index = std::pair<int, int>;
using Curve_index = char;
using Corner_index = short;
using Cb = CGAL::Simplicial_mesh_cell_base_3<K, Subdomain_index, Surface_patch_index>;
using Cb = CGAL::Simplicial_mesh_cell_base_3<Subdomain_index, Surface_patch_index>;
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
Curve_index, Corner_index>;