diff --git a/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp b/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp new file mode 100644 index 00000000000..f21ba594ab9 --- /dev/null +++ b/Frechet_distance/examples/Frechet_distance/Frechet_DS_2.cpp @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + +#include +#include +#include + +using Kernel = CGAL::Simple_cartesian; +using Traits = CGAL::Frechet_distance_traits_2; +using Point = Traits::Point_d; +using Curve = std::vector; +using Curves = std::vector; + +int main() +{ + Curves curves; + const std::filesystem::path data{"./data"}; + for (auto const& dir_entry : std::filesystem::directory_iterator{data}){ + std::ifstream in(dir_entry.path()); + curves.push_back(Curve()); + CGAL::IO::read_linestring_WKT(in, curves.back()); + } + + Curve query = curves.back(); + + curves.pop_back(); + + CGAL::Frechet_distance::Neighbor_search ds; + ds.insert(curves); + + for(const Curve& c : curves){ + std::pair res = CGAL::bounded_error_Frechet_distance(c, query, 0.000001); + std::cout << "The Frechet distance between the polylines is between " << res.first << " and " << res.second << std::endl; + } + double distance = 16; + std::vector result = ds.get_close_curves(query, distance); + + std::cout << result.size() << " curves at Frechet distance closer than " << distance << std::endl; +}