## CGAL::Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM>

### Definition

The class Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM> provides a model for the SegmentVoronoiDiagramTraits_2 concept.

The class Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM> uses the filtering technique [BBP01] to achieve traits for the Segment_Voronoi_diagram_2<Gt,DS> class with efficient and exact predicates given an exact kernel EK and a filtering kernel FK. The geometric constructions associated provided by this class are equivalent to those provided by the traits class Segment_Voronoi_diagram_traits_2<CK,CM>, which means that they may be inexact depending on the choice of the CK kernel.

This class has six template parameters. The first, third and fifth template parameters must be a models of the Kernel concept. The parameter CK is the construction kernel and it is the kernel that will be used for constructions. The parameter FK is the filtering kernel; this kernel will be used for performing the arithmetic filtering for the predicates involved in the computation of the segment Voronoi diagram. Finally, the parameter EK is the exact kernel; this kernel will be used for computing the predicates if the filtering kernel fails to produce an answer.

The second, fourth and sixth template parameters correspond to how predicates are evaluated. There are two predefined possible values for these parameters, namely CGAL::Sqrt_field_tag and CGAL::Field_tag. The first one must be used when the number type used in the representation supports the exact evaluation of signs of expressions involving all four basic operations and square roots, whereas the second one requires that only field operations are exact. Finally, in order to get exact constructions CM must be set to CGAL::Sqrt_field_tag and the number type in CK must support operations involing divisions and square roots (as well as the other three basic operations of course). The way the predicates are evaluated is discussed in [Bur96] and [Kar04] (the geometric filtering part).

The default values for the template parameters are as follows: CM = CGAL::Sqrt_field_tag (it is assumed that CGAL::Cartesian<double> or CGAL::Simple_cartesian<double> will be the entry for the template parameter CK), EM = CGAL::Field_tag, FK = CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, FM = CGAL::Sqrt_field_tag. If the GMP package is installed with CGAL, the template parameter EK has the default value: EK = CGAL::Simple_cartesian<CGAL::Gmpq>, otherwise its default value is EK = CGAL::Simple_cartesian<CGAL::Quotient<CGAL::MP_Float> >.

#include <CGAL/Segment_Voronoi_diagram_filtered_traits_2.h>

### Is Model for the Concept

SegmentVoronoiDiagramTraits_2
DefaultConstructible
CopyConstructible
Assignable

### Types

typedef CGAL::Tag_true
| Intersections_tag;

In addition to the types required by the SegmentVoronoiDiagramTraits_2 concept the class Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM> defines the following types:

typedef CK | Kernel;
typedef CK | Construction_kernel;
typedef FK | Filtering_kernel;
typedef EK | Exact_kernel;
typedef CM | Method_tag;
typedef CM | Construction_traits_method_tag;
typedef FM | Filtering_traits_method_tag;
typedef EM | Exact_traits_method_tag;

Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM>::Construction_traits;
| A type for the segment Voronoi diagram traits, where the kernel is CK.
Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM>::Filtering_traits;
| A type for the segment Voronoi diagram traits, where the kernel is FK.
Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM>::Exact_traits;
| A type for the segment Voronoi diagram traits, where the kernel is EK.

### See Also

Kernel
SegmentVoronoiDiagramTraits_2
CGAL::Field_tag
CGAL::Sqrt_field_tag
CGAL::Segment_Voronoi_diagram_2<Gt,DS>
CGAL::Segment_Voronoi_diagram_hierarchy_2<Gt,STag,DS>
CGAL::Segment_Voronoi_diagram_traits_2<K,MTag>
CGAL::Segment_Voronoi_diagram_traits_without_intersections_2<K,MTag>
CGAL::Segment_Voronoi_diagram_filtered_traits_without_intersections_2<CK,CM,EK,EM,FK,FM>