CGAL::Filtered_kernel<CK>

Definition

Filtered_kernel<CK>is a kernel that uses the filtering technique based on interval arithmetic from [BBP01] to achieve exact and efficient predicates. In addition, a few selected important predicates are implemented using the formally proved, semi-static, filtering techniques from [MP05].

The geometric constructions are exactly those of the kernel CK, which means that they are not necessarily exact.

#include <CGAL/Filtered_kernel.h>

Parameters

The first parameter, CK, is the "Construction Kernel", namely the kernel from which are taken the types of the geometric objects as well as the geometric constructions.

The second parameter, UseStaticFilters, is a Boolean value which activates or not an additional layer of semi-static filters. It defaults to true (activated), unless the CGAL_NO_STATIC_FILTERS macro is defined. This option is mostly for debugging and testing, there should be no production use for deactivating static filters.

Is Model for the Concepts

Kernel

Types

typedef EK Exact_kernel; The type of the exact kernel.
typedef FK Approximate_kernel; The type of the approximate "filtering" kernel.

Constants

static const bool Has_static_filters; A Boolean value corresponding to the second template argument. Tells whether static filters are provided.

Example

The following example shows how to produce a kernel whose geometric objects and constructions are those of Simple_cartesian<double> but the predicates are exact.

#include <CGAL/Simple_cartesian.h>
#include <CGAL/Filtered_kernel.h>

typedef CGAL::Simple_cartesian<double> CK;
typedef CGAL::Filtered_kernel<CK> K;

Implementation

The implementation uses CGAL::Filtered_predicate<EP, FP, C2E, C2F> over each predicate of the kernel traits interface. Additionally, faster static filters may be used for a few selected critical predicates.