mirror of https://github.com/CGAL/cgal
wip simplicial Cb and Vb
This commit is contained in:
parent
8c5fe5fd0e
commit
43e96bfe2a
|
|
@ -36,35 +36,17 @@ public:
|
||||||
/// @{
|
/// @{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
The bare point type, required to match the `Point_3` type
|
Type of indices for cells of the mesh complex.
|
||||||
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.
|
|
||||||
Must match the type `MeshDomain_3::Subdomain_index` in the context of mesh generation.
|
Must match the type `MeshDomain_3::Subdomain_index` in the context of mesh generation.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Subdomain_index;
|
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.
|
Must match the type `MeshDomain_3::Surface_patch_index` in the context of mesh generation.
|
||||||
*/
|
*/
|
||||||
typedef unspecified_type Surface_patch_index;
|
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;
|
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ using Surface_patch_index = unsigned char;
|
||||||
using Curve_index = char;
|
using Curve_index = char;
|
||||||
using Corner_index = short;
|
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,
|
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
|
||||||
Curve_index, Corner_index>;
|
Curve_index, Corner_index>;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -143,12 +143,12 @@ namespace CGAL {
|
||||||
\tparam CurveIndex Type of indices for curves (i.e. \f$ 1\f$-dimensional features)
|
\tparam CurveIndex Type of indices for curves (i.e. \f$ 1\f$-dimensional features)
|
||||||
of the discretized geometric domain.
|
of the discretized geometric domain.
|
||||||
It must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible` and
|
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.
|
does not approximate a 1-dimensional feature of the geometric domain.
|
||||||
It must match the `Curve_index` types of the model
|
It must match the `Curve_index` types of the model
|
||||||
of the `MeshDomainWithFeatures_3` concept when used for mesh generation.
|
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
|
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`).
|
is a model of the concept `MeshDomain_3`).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,6 @@
|
||||||
#include <CGAL/Triangulation_cell_base_3.h>
|
#include <CGAL/Triangulation_cell_base_3.h>
|
||||||
#include <CGAL/SMDS_3/io_signature.h>
|
#include <CGAL/SMDS_3/io_signature.h>
|
||||||
|
|
||||||
#include <boost/variant.hpp>
|
|
||||||
|
|
||||||
#ifdef CGAL_LINKED_WITH_TBB
|
#ifdef CGAL_LINKED_WITH_TBB
|
||||||
# include <atomic>
|
# include <atomic>
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -40,8 +38,7 @@ namespace CGAL {
|
||||||
// Class Simplicial_mesh_cell_3
|
// Class Simplicial_mesh_cell_3
|
||||||
// Cell base class used for tetrahedral remeshing
|
// Cell base class used for tetrahedral remeshing
|
||||||
// Adds information to Cb about the cell of the input complex containing it
|
// Adds information to Cb about the cell of the input complex containing it
|
||||||
template< class Point_3,
|
template< class Subdomain_index_,
|
||||||
class Subdomain_index_,
|
|
||||||
class Surface_patch_index_,
|
class Surface_patch_index_,
|
||||||
class TDS>
|
class TDS>
|
||||||
class Simplicial_mesh_cell_3
|
class Simplicial_mesh_cell_3
|
||||||
|
|
@ -57,7 +54,6 @@ public:
|
||||||
// Index Type
|
// Index Type
|
||||||
using Subdomain_index = Subdomain_index_;
|
using Subdomain_index = Subdomain_index_;
|
||||||
using Surface_patch_index = Surface_patch_index_;
|
using Surface_patch_index = Surface_patch_index_;
|
||||||
using Index = boost::variant<Subdomain_index, Surface_patch_index>;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
@ -286,10 +282,8 @@ public:
|
||||||
static
|
static
|
||||||
std::string io_signature()
|
std::string io_signature()
|
||||||
{
|
{
|
||||||
using Geom_traits = typename Kernel_traits<Point_3>::type;
|
|
||||||
return
|
return
|
||||||
Get_io_signature<Subdomain_index>()() + "+" +
|
Get_io_signature<Subdomain_index>()()
|
||||||
Get_io_signature<Triangulation_cell_base_3<Geom_traits> >()()
|
|
||||||
+ "+(" + Get_io_signature<Surface_patch_index>()() + ")[4]";
|
+ "+(" + 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
|
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.
|
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.
|
\tparam Subdomain_index Type of indices for subdomains of the discretized geometric domain.
|
||||||
Must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible`
|
Must be a model of `CopyConstructible`, `Assignable`, `DefaultConstructible`
|
||||||
and `EqualityComparable`. The default constructed value must match the label
|
and `EqualityComparable`. The default constructed value must match the label
|
||||||
|
|
@ -405,21 +396,19 @@ default parameter value `void`.
|
||||||
\cgalModels `SimplicialMeshCellBase_3`
|
\cgalModels `SimplicialMeshCellBase_3`
|
||||||
|
|
||||||
\sa `CGAL::Mesh_complex_3_in_triangulation_3<Tr,CornerIndex,CurveIndex>`
|
\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 `MeshDomain_3`
|
||||||
\sa `MeshDomainWithFeatures_3`
|
\sa `MeshDomainWithFeatures_3`
|
||||||
*/
|
*/
|
||||||
template< class Gt,
|
template< typename Subdomain_index,
|
||||||
typename Subdomain_index,
|
|
||||||
typename Surface_patch_index,
|
typename Surface_patch_index,
|
||||||
class TDS = void >
|
class TDS = void >
|
||||||
class Simplicial_mesh_cell_base_3;
|
class Simplicial_mesh_cell_base_3;
|
||||||
|
|
||||||
// Specialization for void.
|
// Specialization for void.
|
||||||
template <typename Gt,
|
template <typename Subdomain_index,
|
||||||
typename Subdomain_index,
|
|
||||||
typename Surface_patch_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:
|
public:
|
||||||
typedef internal::Dummy_tds_3 Triangulation_data_structure;
|
typedef internal::Dummy_tds_3 Triangulation_data_structure;
|
||||||
|
|
@ -429,8 +418,7 @@ public:
|
||||||
template <typename TDS2>
|
template <typename TDS2>
|
||||||
struct Rebind_TDS
|
struct Rebind_TDS
|
||||||
{
|
{
|
||||||
typedef Simplicial_mesh_cell_3<typename Gt::Point_3,
|
typedef Simplicial_mesh_cell_3<Subdomain_index,
|
||||||
Subdomain_index,
|
|
||||||
Surface_patch_index,
|
Surface_patch_index,
|
||||||
TDS2> Other;
|
TDS2> Other;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ public:
|
||||||
v.index());
|
v.index());
|
||||||
return os;
|
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.
|
index of the subcomplex it belongs to.
|
||||||
|
|
||||||
\tparam Gt is the geometric traits class.
|
\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
|
\tparam Vb is the vertex base class. It has to be a model
|
||||||
of the concept `TriangulationVertexBase_3` and defaults to
|
of the concept `TriangulationVertexBase_3` and defaults to
|
||||||
|
|
@ -221,7 +251,7 @@ of the concept `TriangulationVertexBase_3` and defaults to
|
||||||
\cgalModels `SimplicialMeshVertexBase_3`
|
\cgalModels `SimplicialMeshVertexBase_3`
|
||||||
|
|
||||||
\sa `CGAL::Mesh_complex_3_in_triangulation_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 `MeshDomain_3`
|
||||||
\sa `MeshDomainWithFeatures_3`
|
\sa `MeshDomainWithFeatures_3`
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ using Surface_patch_index = std::pair<int, int>;
|
||||||
using Curve_index = char;
|
using Curve_index = char;
|
||||||
using Corner_index = short;
|
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,
|
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
|
||||||
Curve_index, Corner_index>;
|
Curve_index, Corner_index>;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,15 +21,6 @@ namespace CGAL
|
||||||
{
|
{
|
||||||
namespace Tetrahedral_remeshing
|
namespace Tetrahedral_remeshing
|
||||||
{
|
{
|
||||||
namespace internal
|
|
||||||
{
|
|
||||||
struct Fake_MD_C
|
|
||||||
{
|
|
||||||
typedef int Subdomain_index;
|
|
||||||
typedef int Surface_patch_index;
|
|
||||||
typedef int Index;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\ingroup PkgTetrahedralRemeshingClasses
|
\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
|
It is designed to serve as cell base class for the 3D triangulation
|
||||||
used in the tetrahedral remeshing process.
|
used in the tetrahedral remeshing process.
|
||||||
|
|
||||||
\tparam Gt is the geometric traits class.
|
\todo indices
|
||||||
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>`.
|
|
||||||
|
|
||||||
\cgalModels `SimplicialMeshCellBase_3`
|
\cgalModels `SimplicialMeshCellBase_3`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template<typename Gt,
|
template<typename Subdomain_index = int,
|
||||||
typename Subdomain_index = int,
|
|
||||||
typename Surface_patch_index = int,
|
typename Surface_patch_index = int,
|
||||||
typename TDS = void>
|
typename TDS = void>
|
||||||
using Remeshing_cell_base_3
|
using Remeshing_cell_base_3
|
||||||
= CGAL::Simplicial_mesh_cell_base_3<Gt,
|
= CGAL::Simplicial_mesh_cell_base_3<Subdomain_index,
|
||||||
Subdomain_index,
|
|
||||||
Surface_patch_index,
|
Surface_patch_index,
|
||||||
TDS>;
|
TDS>;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ and `Parallel_if_available_tag`.
|
||||||
template<typename Gt,
|
template<typename Gt,
|
||||||
typename Concurrency_tag = CGAL::Sequential_tag,
|
typename Concurrency_tag = CGAL::Sequential_tag,
|
||||||
typename Vb = Remeshing_vertex_base_3<Gt>,
|
typename Vb = Remeshing_vertex_base_3<Gt>,
|
||||||
typename Cb = Remeshing_cell_base_3<Gt>
|
typename Cb = Remeshing_cell_base_3<>
|
||||||
>
|
>
|
||||||
class Remeshing_triangulation_3
|
class Remeshing_triangulation_3
|
||||||
: public CGAL::Triangulation_3<Gt, CGAL::Triangulation_data_structure_3<Vb,Cb> >
|
: public CGAL::Triangulation_3<Gt, CGAL::Triangulation_data_structure_3<Vb,Cb> >
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ using Surface_patch_index = std::pair<int, int>;
|
||||||
using Curve_index = char;
|
using Curve_index = char;
|
||||||
using Corner_index = short;
|
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,
|
using Vb = CGAL::Simplicial_mesh_vertex_base_3<K, Subdomain_index, Surface_patch_index,
|
||||||
Curve_index, Corner_index>;
|
Curve_index, Corner_index>;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue