Given a set of sample points issued from a surface and a query point p, the function surface_neighbors_3 computes the neighbors of p on the surface within the sample points. If the sampling is sufficiently dense, the neighbors are provably close to the point p on the surface (cf. the manual pages and [BF02],[Flö03]). They are defined to be the neighbors of p in the regular triangulation dual to the power diagram which is equivalent to the intersection of the Voronoi cell of the query point p with the tangent plane to the surface at p.
#include <CGAL/surface_neighbors_3.h>
 

 
The sample points $$ are provided in the range
$$[.first, beyond$$.).
InputIterator::value_type 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 surface neighbors of p are computed which are the neighbors of p in the regular triangulation that is dual to the intersection of the $$3D Voronoi diagram of $$ with the tangent plane. The point sequence that is computed by the function is placed starting at out. The function returns an iterator that is placed pasttheend of the resulting point sequence.  
 

 
the 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>. 
The next functions return, in addition, a boolean value 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 $$knearest neighbor or a range search query, this permits to verify that a large enough neighborhood has been considered.
 
 
 
Similar to the first function. The additional third 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 be (p,normal). It is false otherwise.  
 
 
 
The same as above except that this function takes the maximal distance from p to the points in the range $$[.first, beyond$$.) as additional parameter.  
 
 
 
The 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>. There is no parameter max_distance.  
 
 
 
The same as above with the parameter max_distance. 
The next function allows to filter some potential neighbors of the query point p from $$ via its threedimensional Delaunay triangulation. All surface neighbors of p are necessarily neighbors in the Delaunay triangulation of $$ {p}.
 

 
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 for the 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>.  
 

 
The 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>. 