mirror of https://github.com/CGAL/cgal
Merge pull request #830 from afabri/Mesh_3-Default-GF
Introduce CGAL::Default for the geometric traits of Mesh_triangulation_3
This commit is contained in:
commit
121e562dd6
|
|
@ -6,19 +6,19 @@ namespace CGAL {
|
||||||
The class `Mesh_triangulation_3` is a metafunctor which provides the triangulation type to be used
|
The class `Mesh_triangulation_3` is a metafunctor which provides the triangulation type to be used
|
||||||
for the 3D triangulation embedding the mesh.
|
for the 3D triangulation embedding the mesh.
|
||||||
|
|
||||||
\tparam MD stands for a model of `MeshDomain_3`.
|
\tparam MD must be a model of `MeshDomain_3`.
|
||||||
|
|
||||||
\tparam Gt stands for a model of `RegularTriangulationTraits_3`
|
\tparam Gt must be a model of `RegularTriangulationTraits_3` or `Default`
|
||||||
and defaults to `Kernel_traits<MD>::%Kernel`.
|
and defaults to `Kernel_traits<MD>::%Kernel`.
|
||||||
|
|
||||||
\tparam Concurrency_tag enables sequential versus parallel meshing and optimization algorithms.
|
\tparam Concurrency_tag enables sequential versus parallel meshing and optimization algorithms.
|
||||||
Possible values are `Sequential_tag` (the default) and
|
Possible values are `Sequential_tag` (the default) and
|
||||||
`Parallel_tag`.
|
`Parallel_tag`.
|
||||||
|
|
||||||
\tparam Vertex_base stands for a model of `MeshVertexBase_3`
|
\tparam Vertex_base must be a model of `MeshVertexBase_3` or `Default`
|
||||||
and defaults to `Mesh_vertex_base_3<Gt, MD>`.
|
and defaults to `Mesh_vertex_base_3<Gt, MD>`.
|
||||||
|
|
||||||
\tparam Cell_base stands for a model of `MeshCellBase_3`
|
\tparam Cell_base must be a model of `MeshCellBase_3` or `Default`
|
||||||
and defaults to `Compact_mesh_cell_base_3<Gt, MD>`.
|
and defaults to `Compact_mesh_cell_base_3<Gt, MD>`.
|
||||||
|
|
||||||
\sa `make_mesh_3()`
|
\sa `make_mesh_3()`
|
||||||
|
|
|
||||||
|
|
@ -13,16 +13,15 @@
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Criteria
|
// Criteria
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,15 @@
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Criteria
|
// Criteria
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,15 @@ typedef K::Point_3 Point;
|
||||||
typedef FT (Function)(const Point&);
|
typedef FT (Function)(const Point&);
|
||||||
typedef CGAL::Implicit_mesh_domain_3<Function,K> Mesh_domain;
|
typedef CGAL::Implicit_mesh_domain_3<Function,K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Criteria
|
// Criteria
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,15 @@ typedef K::Point_3 Point;
|
||||||
typedef FT (Function)(const Point&);
|
typedef FT (Function)(const Point&);
|
||||||
typedef CGAL::Implicit_mesh_domain_3<Function,K> Mesh_domain;
|
typedef CGAL::Implicit_mesh_domain_3<Function,K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Criteria
|
// Criteria
|
||||||
|
|
|
||||||
|
|
@ -12,16 +12,15 @@
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Mesh Criteria
|
// Mesh Criteria
|
||||||
|
|
|
||||||
|
|
@ -12,16 +12,15 @@
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
typedef CGAL::Labeled_image_mesh_domain_3<CGAL::Image_3,K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Mesh Criteria
|
// Mesh Criteria
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,15 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Polyhedron_3<K> Polyhedron;
|
typedef CGAL::Polyhedron_3<K> Polyhedron;
|
||||||
typedef CGAL::Polyhedral_mesh_domain_3<Polyhedron, K> Mesh_domain;
|
typedef CGAL::Polyhedral_mesh_domain_3<Polyhedron, K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
|
||||||
|
|
||||||
// Criteria
|
// Criteria
|
||||||
|
|
|
||||||
|
|
@ -11,16 +11,15 @@
|
||||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||||
typedef CGAL::Polyhedral_mesh_domain_with_features_3<K> Mesh_domain;
|
typedef CGAL::Polyhedral_mesh_domain_with_features_3<K> Mesh_domain;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<
|
||||||
Tr,Mesh_domain::Corner_index,Mesh_domain::Curve_segment_index> C3t3;
|
Tr,Mesh_domain::Corner_index,Mesh_domain::Curve_segment_index> C3t3;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,16 +22,15 @@ typedef CGAL::Mesh_domain_with_polyline_features_3<
|
||||||
typedef std::vector<Point> Polyline_3;
|
typedef std::vector<Point> Polyline_3;
|
||||||
typedef std::list<Polyline_3> Polylines;
|
typedef std::list<Polyline_3> Polylines;
|
||||||
|
|
||||||
// Triangulation
|
|
||||||
#ifdef CGAL_CONCURRENT_MESH_3
|
#ifdef CGAL_CONCURRENT_MESH_3
|
||||||
typedef CGAL::Mesh_triangulation_3<
|
typedef CGAL::Parallel_tag Concurrency_tag;
|
||||||
Mesh_domain,
|
|
||||||
CGAL::Kernel_traits<Mesh_domain>::Kernel, // Same as sequential
|
|
||||||
CGAL::Parallel_tag // Tag to activate parallelism
|
|
||||||
>::type Tr;
|
|
||||||
#else
|
#else
|
||||||
typedef CGAL::Mesh_triangulation_3<Mesh_domain>::type Tr;
|
typedef CGAL::Sequential_tag Concurrency_tag;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Triangulation
|
||||||
|
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
|
||||||
|
|
||||||
typedef CGAL::Mesh_complex_3_in_triangulation_3<
|
typedef CGAL::Mesh_complex_3_in_triangulation_3<
|
||||||
Tr,Mesh_domain::Corner_index,Mesh_domain::Curve_segment_index> C3t3;
|
Tr,Mesh_domain::Corner_index,Mesh_domain::Curve_segment_index> C3t3;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,18 +56,20 @@ namespace CGAL {
|
||||||
// Struct Mesh_triangulation_3
|
// Struct Mesh_triangulation_3
|
||||||
//
|
//
|
||||||
template<class MD,
|
template<class MD,
|
||||||
class K=typename Kernel_traits<MD>::Kernel,
|
class K_ = Default,
|
||||||
class Concurrency_tag = Sequential_tag,
|
class Concurrency_tag = Sequential_tag,
|
||||||
class Vertex_base_ = Default,
|
class Vertex_base_ = Default,
|
||||||
class Cell_base_ = Default>
|
class Cell_base_ = Default>
|
||||||
struct Mesh_triangulation_3;
|
struct Mesh_triangulation_3;
|
||||||
|
|
||||||
// Sequential version (default)
|
// Sequential version (default)
|
||||||
template<class MD, class K, class Concurrency_tag,
|
template<class MD, class K_, class Concurrency_tag,
|
||||||
class Vertex_base_, class Cell_base_>
|
class Vertex_base_, class Cell_base_>
|
||||||
struct Mesh_triangulation_3
|
struct Mesh_triangulation_3
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
typedef typename Default::Get<K_, typename Kernel_traits<MD>::Kernel>::type K;
|
||||||
|
|
||||||
typedef typename details::Mesh_geom_traits_generator<K>::type Geom_traits;
|
typedef typename details::Mesh_geom_traits_generator<K>::type Geom_traits;
|
||||||
|
|
||||||
typedef typename Default::Get<
|
typedef typename Default::Get<
|
||||||
|
|
@ -88,11 +90,13 @@ public:
|
||||||
#ifdef CGAL_LINKED_WITH_TBB
|
#ifdef CGAL_LINKED_WITH_TBB
|
||||||
// Parallel version (specialization)
|
// Parallel version (specialization)
|
||||||
//
|
//
|
||||||
template<class MD, class K,
|
template<class MD, class K_,
|
||||||
class Vertex_base_, class Cell_base_>
|
class Vertex_base_, class Cell_base_>
|
||||||
struct Mesh_triangulation_3<MD, K, Parallel_tag, Vertex_base_, Cell_base_>
|
struct Mesh_triangulation_3<MD, K_, Parallel_tag, Vertex_base_, Cell_base_>
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
typedef typename Default::Get<K_, typename Kernel_traits<MD>::Kernel>::type K;
|
||||||
|
|
||||||
typedef typename details::Mesh_geom_traits_generator<K>::type Geom_traits;
|
typedef typename details::Mesh_geom_traits_generator<K>::type Geom_traits;
|
||||||
|
|
||||||
typedef typename Default::Get<
|
typedef typename Default::Get<
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue