Я использую boost
для вычисления диаграммы Вороного для набора точек в 2-D, очень просто;
std::vector<Point> points;
...
voronoi_diagram<double> vd;
construct_voronoi(points.begin(), points.end(), &vd);
Есть ли алгоритм для обработки полученных многоугольников, чтобы запрос «К какому сайту принадлежит данная точка?» можно ответить в постоянное время? Другими словами, в каком многоугольнике данная точка расположена среди набора многоугольников?
Конечно, можно вычислить и сравнить расстояние от данной точки до существующих, но это займет время O (n) и не использует информацию, закодированную в диаграмме Вороного.