summaryrefslogtreecommitdiff
path: root/src/common/include/gudhi
diff options
context:
space:
mode:
authorHind-M <hind.montassif@gmail.com>2021-10-01 15:47:58 +0200
committerHind-M <hind.montassif@gmail.com>2021-10-01 15:47:58 +0200
commitd3970dbbc16993d348092899eb8fcd1ea1aceb8d (patch)
tree57f5c33aa4baad7f057a38c4327243ec3ccbcc80 /src/common/include/gudhi
parent65b32d167810a107cf807572f84cef082c76067d (diff)
Separate Minimal_enclosing_ball_radius class which uses CGAL from common distance_functions.h file
Diffstat (limited to 'src/common/include/gudhi')
-rw-r--r--src/common/include/gudhi/distance_functions.h83
1 files changed, 0 insertions, 83 deletions
diff --git a/src/common/include/gudhi/distance_functions.h b/src/common/include/gudhi/distance_functions.h
index a8ee4a75..5e5a1e31 100644
--- a/src/common/include/gudhi/distance_functions.h
+++ b/src/common/include/gudhi/distance_functions.h
@@ -13,13 +13,9 @@
#include <gudhi/Debug_utils.h>
-#include <gudhi/Miniball.hpp>
-
#include <boost/range/metafunctions.hpp>
#include <boost/range/size.hpp>
-#include <CGAL/Epeck_d.h>
-
#include <cmath> // for std::sqrt
#include <type_traits> // for std::decay
#include <iterator> // for std::begin, std::end
@@ -61,85 +57,6 @@ class Euclidean_distance {
}
};
-/** @brief Compute the radius of the minimal enclosing ball between Points given by a range of coordinates.
- * The points are assumed to have the same dimension. */
-class Minimal_enclosing_ball_radius {
- public:
- /** \brief Enclosing ball radius from two points using CGAL.
- *
- * @param[in] point_1
- * @param[in] point_2
- * @return Enclosing ball radius for the two points.
- * \tparam Point must be a Kernel::Point_d from CGAL.
- *
- */
- template< typename Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>,
- typename Point= typename Kernel::Point_d>
- double operator()(const Point& point_1, const Point& point_2) const {
- Kernel kernel_;
- return std::sqrt(CGAL::to_double(kernel_.squared_distance_d_object()(point_1, point_2))) / 2.;
- }
-
- /** \brief Minimal_enclosing_ball_radius from two points.
- *
- * @param[in] point_1 First point.
- * @param[in] point_2 second point.
- * @return The minimal enclosing ball radius for the two points (aka. Euclidean distance / 2.).
- *
- * \tparam Point must be a range of Cartesian coordinates.
- *
- */
- template< typename Point >
- typename std::iterator_traits<typename boost::range_iterator<Point>::type>::value_type
- operator()(const Point& point_1, const Point& point_2) const {
- std::clog << "#" << *point_1.begin() << "##" << *point_2.begin() << std::endl;
- return Euclidean_distance()(point_1, point_2) / 2.;
- }
-
- /** \brief Enclosing ball radius from a point cloud using CGAL.
- *
- * @param[in] point_cloud The points.
- * @return Enclosing ball radius for the points.
- * \tparam Point_cloud must be a range of Kernel::Point_d points from CGAL.
- *
- */
- template< typename Kernel = CGAL::Epeck_d<CGAL::Dynamic_dimension_tag>,
- typename Point= typename Kernel::Point_d,
- typename Point_cloud = std::vector<Point>>
- double operator()(const Point_cloud& point_cloud) const {
- Kernel kernel_;
- return std::sqrt(CGAL::to_double(kernel_.compute_squared_radius_d_object()(point_cloud.begin(), point_cloud.end())));
- }
-
- /** \brief Minimal_enclosing_ball_radius from a point cloud.
- *
- * @param[in] point_cloud The points.
- * @return The minimal enclosing ball radius for the points.
- *
- * \tparam Point_cloud must be a range of points with Cartesian coordinates.
- * Point_cloud is a range over a range of Coordinate.
- *
- */
- template< typename Point_cloud,
- typename Point_iterator = typename boost::range_const_iterator<Point_cloud>::type,
- typename Point = typename std::iterator_traits<Point_iterator>::value_type,
- typename Coordinate_iterator = typename boost::range_const_iterator<Point>::type,
- typename Coordinate = typename std::iterator_traits<Coordinate_iterator>::value_type>
- Coordinate
- operator()(const Point_cloud& point_cloud) const {
- using Min_sphere = Miniball::Miniball<Miniball::CoordAccessor<Point_iterator, Coordinate_iterator>>;
-
- Min_sphere ms(boost::size(*point_cloud.begin()), point_cloud.begin(), point_cloud.end());
-#ifdef DEBUG_TRACES
- std::clog << "Minimal_enclosing_ball_radius = " << std::sqrt(ms.squared_radius()) << " | nb points = "
- << boost::size(point_cloud) << " | dimension = "
- << boost::size(*point_cloud.begin()) << std::endl;
-#endif // DEBUG_TRACES
-
- return std::sqrt(ms.squared_radius());
- }
-};
-
} // namespace Gudhi
#endif // DISTANCE_FUNCTIONS_H_