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>
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.
typedef EK | Exact_kernel; | The type of the exact kernel. |
typedef FK | Approximate_kernel; | The type of the approximate "filtering" kernel. |
static const bool | Has_static_filters; | A Boolean value corresponding to the second template argument. Tells whether static filters are provided. |
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;