|
CGAL 6.3 - 2D and Surface Function Interpolation
|
The functions surface_neighbor_coordinates_3() compute natural neighbor coordinates for surface points associated to a finite set of sample points issued from the surface.
The coordinates are computed from the intersection of the Voronoi cell of the query point p with the tangent plane to the surface at p. If the sampling is sufficiently dense, the coordinate system meets the properties described in the manual pages and in [2],[5]. The query point p needs to lie inside the convex hull of the projection of the sample points onto the tangent plane at p.
The functions surface_neighbor_coordinates_certified_3() return, in addition, a second Boolean value (the fourth value of the quadruple) that certifies whether or not, the Voronoi cell of p can be affected by points that lie outside the input range, i.e. outside the ball centered on p passing through the furthest sample point from p in the range [first, beyond). If the sample points are collected by a k-nearest neighbor or a range search query, this permits to check whether the neighborhood which has been considered is large enough.
Requirements
Implementation
This functions construct the regular triangulation of the input points instantiated with Voronoi_intersection_2_traits_3<Kernel> or ITraits if provided. They return the result of the function call CGAL::regular_neighbor_coordinates_2() with the regular triangulation and p as arguments.
Functions | |
| template<class OutputIterator, class InputIterator, class Kernel> | |
| CGAL::Triple< OutputIterator, typename Kernel::FT, bool > | CGAL::surface_neighbor_coordinates_3 (InputIterator first, InputIterator beyond, const typename Kernel::Point_3 &p, const typename Kernel::Vector_3 &normal, OutputIterator out, const Kernel &K) |
| The sample points \( \mathcal{P}\) are provided in the range [first, beyond). | |
| template<class OutputIterator, class InputIterator, class ITraits> | |
| CGAL::Triple< OutputIterator, typename ITraits::FT, bool > | CGAL::surface_neighbor_coordinates_3 (InputIterator first, InputIterator beyond, const typename ITraits::Point_2 &p, OutputIterator out, const ITraits &traits) |
| Same as above only that the traits class must be instantiated by the user. | |
| template<class OutputIterator, class InputIterator, class Kernel> | |
| CGAL::Quadruple< OutputIterator, typename Kernel::FT, bool, bool > | CGAL::surface_neighbor_coordinates_certified_3 (InputIterator first, InputIterator beyond, const typename Kernel::Point_3 &p, const typename Kernel::Vector_3 &normal, OutputIterator out, const Kernel &K) |
| Similar to the first function. | |
| template<class OutputIterator, class InputIterator, class Kernel> | |
| CGAL::Quadruple< OutputIterator, typename Kernel::FT, bool, bool > | CGAL::surface_neighbor_coordinates_certified_3 (InputIterator first, InputIterator beyond, const typename Kernel::Point_3 &p, const typename Kernel::FT &max_distance, OutputIterator out, const Kernel &kernel) |
| Same as above except that this function takes the maximal distance from p to the points in the range [first, beyond) as additional parameter. | |
| template<class OutputIterator, class InputIterator, class ITraits> | |
| CGAL::Quadruple< OutputIterator, typename ITraits::FT, bool, bool > | CGAL::surface_neighbor_coordinates_certified_3 (InputIterator first, InputIterator beyond, const typename ITraits::Point_2 &p, OutputIterator out, const ITraits &traits) |
| Same as above only that the traits class must be instantiated by the user and without the parameter max_distance. | |
| template<class OutputIterator, class InputIterator, class ITraits> | |
| CGAL::Quadruple< OutputIterator, typename ITraits::FT, bool, bool > | CGAL::surface_neighbor_coordinates_certified_3 (InputIterator first, InputIterator beyond, const typename ITraits::Point_2 &p, const typename ITraits::FT &max_distance, OutputIterator out, const ITraits &traits) |
| Same as above with the parameter max_distance. | |
| template<class Dt, class OutputIterator> | |
| CGAL::Triple< OutputIterator, typename Dt::Geom_traits::FT, bool > | CGAL::surface_neighbor_coordinates_3 (const Dt &dt, const typename Dt::Geom_traits::Point_3 &p, const typename Dt::Geom_traits::Vector_3 &normal, OutputIterator out, typename Dt::Cell_handle start=typename Dt::Cell_handle()) |
| Computes the surface neighbor coordinates with respect to the points that are vertices of the Delaunay triangulation dt. | |
| template<class Dt, class OutputIterator, class ITraits> | |
| CGAL::Triple< OutputIterator, typename Dt::Geom_traits::FT, bool > | CGAL::surface_neighbor_coordinates_3 (const Dt &dt, const typename Dt::Geom_traits::Point_3 &p, OutputIterator out, const ITraits &traits, typename Dt::Cell_handle start=typename Dt::Cell_handle()) |
| Same as above only that the parameter traits instantiates the geometric traits class. | |
| CGAL::Triple< OutputIterator, typename Dt::Geom_traits::FT, bool > CGAL::surface_neighbor_coordinates_3 | ( | const Dt & | dt, |
| const typename Dt::Geom_traits::Point_3 & | p, | ||
| const typename Dt::Geom_traits::Vector_3 & | normal, | ||
| OutputIterator | out, | ||
| typename Dt::Cell_handle | start = typename Dt::Cell_handle() ) |
#include <CGAL/surface_neighbor_coordinates_3.h>
Computes the surface neighbor coordinates with respect to the points that are vertices of the Delaunay triangulation dt.
The type Dt must be equivalent to Delaunay_triangulation_3<Gt, Tds>. The optional parameter start is used as a starting place for the search of the conflict zone. It may be the result of the call dt.locate(p). This function instantiates the template parameter ITraits to be Voronoi_intersection_2_traits_3<Dt::Geom_traits>.
This function allows to filter some potential neighbors of the query point p from \( \mathcal{P}\) via its three-dimensional Delaunay triangulation. All surface neighbors of p are necessarily neighbors in the Delaunay triangulation of \( \mathcal{P} \cup \{p\}\).
| CGAL::Triple< OutputIterator, typename Dt::Geom_traits::FT, bool > CGAL::surface_neighbor_coordinates_3 | ( | const Dt & | dt, |
| const typename Dt::Geom_traits::Point_3 & | p, | ||
| OutputIterator | out, | ||
| const ITraits & | traits, | ||
| typename Dt::Cell_handle | start = typename Dt::Cell_handle() ) |
#include <CGAL/surface_neighbor_coordinates_3.h>
Same as above only that the parameter traits instantiates the geometric traits class.
Its type ITraits must be equivalent to Voronoi_intersection_2_traits_3<K>.
| CGAL::Triple< OutputIterator, typename ITraits::FT, bool > CGAL::surface_neighbor_coordinates_3 | ( | InputIterator | first, |
| InputIterator | beyond, | ||
| const typename ITraits::Point_2 & | p, | ||
| OutputIterator | out, | ||
| const ITraits & | traits ) |
#include <CGAL/surface_neighbor_coordinates_3.h>
Same as above only that the traits class must be instantiated by the user.
ITraits must be equivalent to Voronoi_intersection_2_traits_3<K>.
| CGAL::Triple< OutputIterator, typename Kernel::FT, bool > CGAL::surface_neighbor_coordinates_3 | ( | InputIterator | first, |
| InputIterator | beyond, | ||
| const typename Kernel::Point_3 & | p, | ||
| const typename Kernel::Vector_3 & | normal, | ||
| OutputIterator | out, | ||
| const Kernel & | K ) |
#include <CGAL/surface_neighbor_coordinates_3.h>
The sample points \( \mathcal{P}\) are provided in the range [first, beyond).
The value type of InputIterator is the point type Kernel::Point_3. The tangent plane is defined by the point p and the vector normal. The parameter K determines the kernel type that will instantiate the template parameter of Voronoi_intersection_2_traits_3<K>.
The natural neighbor coordinates for p are computed in the power diagram that results from the intersection of the 3D Voronoi diagram of \( \mathcal{P}\) with the tangent plane. The sequence of point/coordinate pairs that is computed by the function is placed starting at out. The function returns a triple with an iterator that is placed past-the-end of the resulting sequence of point/coordinate pairs, the normalization factor of the coordinates and a Boolean value which is set to true iff the coordinate computation was successful, i.e. if p lies inside the convex hull of the projection of the points \( \mathcal{P}\) onto the tangent plane.
| CGAL::Quadruple< OutputIterator, typename ITraits::FT, bool, bool > CGAL::surface_neighbor_coordinates_certified_3 | ( | InputIterator | first, |
| InputIterator | beyond, | ||
| const typename ITraits::Point_2 & | p, | ||
| OutputIterator | out, | ||
| const ITraits & | traits ) |
#include <CGAL/surface_neighbor_coordinates_3.h>
Same as above only that the traits class must be instantiated by the user and without the parameter max_distance.
ITraits must be equivalent to Voronoi_intersection_2_traits_3<K>.
| CGAL::Quadruple< OutputIterator, typename Kernel::FT, bool, bool > CGAL::surface_neighbor_coordinates_certified_3 | ( | InputIterator | first, |
| InputIterator | beyond, | ||
| const typename Kernel::Point_3 & | p, | ||
| const typename Kernel::Vector_3 & | normal, | ||
| OutputIterator | out, | ||
| const Kernel & | K ) |
#include <CGAL/surface_neighbor_coordinates_3.h>
Similar to the first function.
The additional fourth return value is true if the furthest point in the range [first, beyond) is further away from p than twice the distance from p to the furthest vertex of the intersection of the Voronoi cell of p with the tangent plane defined by (p,normal). It is false otherwise.