11#ifndef SPHERE_CIRCUMRADIUS_H_
12#define SPHERE_CIRCUMRADIUS_H_
14#include <CGAL/Epick_d.h>
15#include <CGAL/Lazy_exact_nt.h>
22namespace cech_complex {
26template<
typename Kernel,
typename Filtration_value>
27class 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