Tatooine
natural_neighbor_coordinates.h
Go to the documentation of this file.
1#if TATOOINE_CGAL_AVAILABLE || defined(TATOOINE_DOC_ONLY)
2//==============================================================================
3#ifndef TATOOINE_CGAL_NATURAL_NEIGHBOR_COORDINATES_H
4#define TATOOINE_CGAL_NATURAL_NEIGHBOR_COORDINATES_H
5//==============================================================================
6#include <CGAL/natural_neighbor_coordinates_2.h>
7#include <CGAL/natural_neighbor_coordinates_3.h>
9
10#include <vector>
11//==============================================================================
12namespace tatooine::cgal {
15//==============================================================================
16template <std::size_t NumDimensions, typename Traits,
17 typename TriangulationDataStructure>
18requires(NumDimensions == 2)
20 delaunay_triangulation<NumDimensions, Traits,
21 TriangulationDataStructure> const &triangulation,
22 typename delaunay_triangulation<NumDimensions, Traits,
23 TriangulationDataStructure>::Point const
24 &query) {
25 auto nnc = std::vector<std::pair<
27 NumDimensions, Traits, TriangulationDataStructure>::Vertex_handle,
28 typename Traits::FT>>{};
29 return std::pair{
30 CGAL::natural_neighbor_coordinates_2(
31 triangulation, query, std::back_inserter(nnc),
32 CGAL::Identity<typename std::decay_t<decltype(nnc)>::value_type>{}),
33 std::move(nnc)};
34}
35//==============================================================================
36template <std::size_t NumDimensions, typename Traits,
37 typename TriangulationDataStructure>
38requires(NumDimensions == 3)
40 delaunay_triangulation<NumDimensions, Traits,
41 TriangulationDataStructure> const &triangulation,
42 typename delaunay_triangulation<NumDimensions, Traits,
43 TriangulationDataStructure>::Point const
44 &query) {
45 auto nnc = std::vector<std::pair<
47 NumDimensions, Traits, TriangulationDataStructure>::Vertex_handle,
48 typename Traits::FT>>{};
49 auto norm_coeff_sibson = typename Traits::FT{};
50 return std::pair{
51 CGAL::sibson_natural_neighbor_coordinates_3(
52 triangulation, query, std::back_inserter(nnc), norm_coeff_sibson),
53 std::move(nnc)};
54}
55//==============================================================================
56} // namespace tatooine::cgal
57//==============================================================================
58#endif
59//==============================================================================
60#endif
typename delaunay_triangulation_impl< NumDimensions, Traits, TriangulationDataStructure >::type delaunay_triangulation
Definition: delaunay_triangulation.h:40
Definition: delaunay_triangulation.h:14
auto natural_neighbor_coordinates(delaunay_triangulation< NumDimensions, Traits, TriangulationDataStructure > const &triangulation, typename delaunay_triangulation< NumDimensions, Traits, TriangulationDataStructure >::Point const &query)
Definition: natural_neighbor_coordinates.h:19
typename value_type_impl< T >::type value_type
Definition: type_traits.h:280