11 #ifndef SPHERE_CIRCUMRADIUS_H_
12 #define SPHERE_CIRCUMRADIUS_H_
14 #include <CGAL/Epick_d.h>
15 #include <CGAL/Lazy_exact_nt.h>
22 namespace cech_complex {
26 template<
typename Kernel,
typename Filtration_value>
27 class Sphere_circumradius {
32 using FT =
typename Kernel::FT;
33 using Point =
typename Kernel::Point_d;
34 using Point_cloud =
typename std::vector<Point>;
36 CGAL::NT_converter<FT, Filtration_value> cast_to_fv;
46 Filtration_value operator()(
const Point& point_1,
const Point& point_2)
const {
47 auto squared_dist_obj = kernel_.squared_distance_d_object()(point_1, point_2);
48 if(exact_) CGAL::exact(squared_dist_obj);
49 return std::sqrt(cast_to_fv(squared_dist_obj)) / 2.;
60 auto squared_radius_obj = kernel_.compute_squared_radius_d_object()(point_cloud.begin(), point_cloud.end());
61 if(exact_) CGAL::exact(squared_radius_obj);
62 return std::sqrt(cast_to_fv(squared_radius_obj));
70 Sphere_circumradius(
const bool exact =
false) : exact_(exact) {}
Value type for a filtration function on a cell complex.
Definition: FiltrationValue.h:20