## CGAL::regular_neighbor_coordinates_2

### Definition

The function regular_neighbor_coordinates_2 computes natural neighbor coordinates, also called Sibson's coordinates, for weighted 2D points provided a two-dimensional regular triangulation and a (weighted) query point inside the convex hull of the vertices of the triangulation. We call these coordinates regular neighbor coordinates.

#include <CGAL/regular_neighbor_coordinates_2.h>

template < class Rt, class OutputIterator >
CGAL::Triple< OutputIterator, typename Rt::Geom_traits::FT, bool >
 regular_neighbor_coordinates_2 ( Rt rt, typename Rt::Weighted_point p, OutputIterator out, typename Rt::Face_handle start = typename Rt::Face_handle())
computes the regular neighbor coordinates for p with respect to the weighted points in the two-dimensional regular triangulation rt. The template class Rt should be of type Regular_triangulation_2<Traits, Tds>. The value type of the OutputIterator is a pair of Rt::Weighted_point and the coordinate value of type Rt::Geom_traits::FT. 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 points in rt.

template <class Rt, class OutputIterator, class EdgeIterator, class VertexIterator >
CGAL::Triple< OutputIterator, typename Traits::FT, bool >
 regular_neighbor_coordinates_2 ( Rt rt, typename Traits::Weighted_point p, OutputIterator out, EdgeIterator hole_begin, EdgeIterator hole_end, VertexIterator hidden_vertices_begin, VertexIterator hidden_vertices_end)
The same as above. hole_begin and hole_end determines the iterator range over the boundary edges of the conflict zone of p in the triangulation rt. hidden_vertices_begin and hidden_vertices_end determines the iterator range over the hidden vertices of the conflict zone of p inrt. It is the result of the function T.get_boundary_of_conflicts(p,std::back_inserter(hole), std::back_inserter(hidden_vertices), start), see Regular_triangulation_2<Traits, Tds>.

template <class Rt, class OutputIterator>
CGAL::Triple< OutputIterator, typename Rt::Geom_traits::FT, bool >
 regular_neighbor_coordinates_2 ( Rt rt, typename Rt::Vertex_handle vh, OutputIterator out)
This function computes the regular neighbor coordinates of the point vh->point() with respect to the vertices of rt excluding vh->point(). The same as above for the remaining parameters.

### Requirements

1. Rt are equivalent to the class Regular_triangulation_2<Traits, Tds>.
2. The traits class Traits of Rt is a model of the concept RegularTriangulationTraits_2. It provides the number type FT which is a model for FieldNumberType and it must meet the requirements for the traits class of the polygon_area_2 function. A model of this traits class is Regular_triangulation_euclidean_traits_2<K, Weight>.
3. OutputIterator::value_type is equivalent to std::pair<Rt::Weighted_point, Rt::Geom_traits::FT>, i.e. a pair associating a point and its regular neighbor coordinate.

### Implementation

This function computes the areas stolen from the Voronoi cells of points in rt by the insertion of p. The total area of the Voronoi cell of p is also computed and returned by the function. If p lies outside the convex hull, the coordinate values cannot be computed and the third value of the result triple is set to false.