CGAL 6.1 - 2D Range and Neighbor Search
Loading...
Searching...
No Matches
Point_set_2/nearest_neighbor.cpp
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Point_set_2.h>
#include <list>
typedef K::Point_2 Point_2;
Point_2 ar1[5];
int main()
{
std::list<Point_2> Lr;
Point_2 p1(12,14);
Point_2 p2(-12,14);
Point_2 p3(2,11);
Point_2 p4(5,6);
Point_2 p5(6.7,3.8);
Point_2 p6(11,20);
Point_2 p7(-5,6);
Point_2 p8(12,0);
Point_2 p9(4,31);
Point_2 p10(-10,-10);
Lr.push_back(p1); Lr.push_back(p2); Lr.push_back(p3);
Lr.push_back(p4); Lr.push_back(p5); Lr.push_back(p6);
Lr.push_back(p7); Lr.push_back(p8); Lr.push_back(p9);
Lr.push_back(p10);
PSet.insert(Lr.begin(),Lr.end());
// init
ar1[0]=p4; ar1[1]=p5; ar1[2]=p3; ar1[3]=p7; ar1[4]=p8;
Point_2 actual(30,45,10);
// nearest neighbor ...
Vertex_handle v = PSet.nearest_neighbor(actual);
std::cout << "Nearest neighbor:" << v->point() << "\n";
// k nearest neighbors ...
std::list<Vertex_handle> L;
std::list<Vertex_handle>::const_iterator it;
PSet.nearest_neighbors(actual,5, std::back_inserter(L));
std::cout << "actual point: " << actual << "\n";
for (it=L.begin();it != L.end(); it++)
std::cout << (*it)->point() << "\n";
return 0;
}
Vertex_handle insert(const Point &p, Face_handle f=Face_handle())
An instance PS of the data type Point_set_2 is a Delaunay Triangulation of its vertex set.
Definition: Point_set_2.h:19
Vertex _handle nearest_neighbor(Point p)
computes a handle to a vertex v of PS that is closest to p.
OutputIterator nearest_neighbors(Point p, size_type k, OutputIterator res)
computes the k nearest neighbors of p in PS, and places the handles to the corresponding vertices as ...
Triangulation::Vertex_handle Vertex_handle
handles to vertices.
Definition: Point_set_2.h:68