mirror of https://github.com/CGAL/cgal
Make polyhedral surface a template parameter
This commit is contained in:
parent
32b1fb1c90
commit
698e0941ea
|
|
@ -8,11 +8,12 @@ The class `Convex_hull_traits_3` serves as a traits class for the function
|
||||||
function when `R` is a kernel with exact predicates but inexact constructions
|
function when `R` is a kernel with exact predicates but inexact constructions
|
||||||
(note that the type `Plane_3` is a triple of `Point_3` and not `R::Plane_3`).
|
(note that the type `Plane_3` is a triple of `Point_3` and not `R::Plane_3`).
|
||||||
|
|
||||||
|
\tparam MFG must be a ,model of MutableFaceGraph
|
||||||
\cgalModels `ConvexHullTraits_3`
|
\cgalModels `ConvexHullTraits_3`
|
||||||
\cgalModels `IsStronglyConvexTraits_3`
|
\cgalModels `IsStronglyConvexTraits_3`
|
||||||
|
|
||||||
*/
|
*/
|
||||||
template< typename R >
|
template< typename R, typename MFG = Polyhedron_3<R> >
|
||||||
class Convex_hull_traits_3 {
|
class Convex_hull_traits_3 {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
@ -42,7 +43,7 @@ typedef unspecified_type Plane_3;
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
*/
|
*/
|
||||||
typedef Polyhedron_3<R> Polyhedron_3;
|
typedef MFG Polyhedron_3;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ that is `P` will contain only triangular facets.
|
||||||
\tparam Polyhedron_3 must be a model of `MutableFaceGraph`.
|
\tparam Polyhedron_3 must be a model of `MutableFaceGraph`.
|
||||||
\tparam Traits must be a model of the concept `ConvexHullTraits_3`.
|
\tparam Traits must be a model of the concept `ConvexHullTraits_3`.
|
||||||
For the purposes of checking the postcondition that the convex hull
|
For the purposes of checking the postcondition that the convex hull
|
||||||
is valid, `Traits` should also be a model of the concept
|
is valid, `Traits` must also be a model of the concept
|
||||||
`IsStronglyConvexTraits_3`.
|
`IsStronglyConvexTraits_3`.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -53,7 +53,7 @@ in case the result is a polyhedron.
|
||||||
\tparam InputIterator must be an input iterator with a value type equivalent to `Traits::Point_3`.
|
\tparam InputIterator must be an input iterator with a value type equivalent to `Traits::Point_3`.
|
||||||
\tparam Traits must be model of the concept `ConvexHullTraits_3`.
|
\tparam Traits must be model of the concept `ConvexHullTraits_3`.
|
||||||
For the purposes of checking the postcondition that the convex hull
|
For the purposes of checking the postcondition that the convex hull
|
||||||
is valid, `Traits` should also be a model of the concept
|
is valid, `Traits` must also be a model of the concept
|
||||||
`IsStronglyConvexTraits_3`. Furthermore, `Traits` must define a type `Polyhedron_3` that is a model of
|
`IsStronglyConvexTraits_3`. Furthermore, `Traits` must define a type `Polyhedron_3` that is a model of
|
||||||
`MutableFaceGraph`.
|
`MutableFaceGraph`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -185,20 +185,20 @@ struct Convex_hull_traits_base_3<R_, Tag_true>{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
template <class R_, class Has_filtered_predicates_tag = Tag_false>
|
template <class R_, class Polyhedron = Polyhedron_3<R_>, class Has_filtered_predicates_tag = Tag_false>
|
||||||
class Convex_hull_traits_3 :
|
class Convex_hull_traits_3 :
|
||||||
public Convex_hull_traits_base_3<R_, Has_filtered_predicates_tag>
|
public Convex_hull_traits_base_3<R_, Has_filtered_predicates_tag>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef R_ R;
|
typedef R_ R;
|
||||||
typedef Convex_hull_traits_3<R, Has_filtered_predicates_tag> Self;
|
typedef Convex_hull_traits_3<R, Polyhedron, Has_filtered_predicates_tag> Self;
|
||||||
typedef typename R::Point_3 Point_3;
|
typedef typename R::Point_3 Point_3;
|
||||||
typedef typename R::Segment_3 Segment_3;
|
typedef typename R::Segment_3 Segment_3;
|
||||||
typedef typename R::Triangle_3 Triangle_3;
|
typedef typename R::Triangle_3 Triangle_3;
|
||||||
typedef Point_triple<R> Plane_3;
|
typedef Point_triple<R> Plane_3;
|
||||||
typedef typename R::Vector_3 Vector_3;
|
typedef typename R::Vector_3 Vector_3;
|
||||||
|
|
||||||
typedef CGAL::Polyhedron_3<R> Polyhedron_3;
|
typedef Polyhedron Polyhedron_3;
|
||||||
|
|
||||||
typedef typename R::Construct_segment_3 Construct_segment_3;
|
typedef typename R::Construct_segment_3 Construct_segment_3;
|
||||||
typedef typename R::Construct_ray_3 Construct_ray_3;
|
typedef typename R::Construct_ray_3 Construct_ray_3;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue