Мне нужен алгоритм, который заполняет двумерный невыпуклый многоугольник, который может иметь отверстия с точками случайным образом, а затем строит на них диаграмму Вороного. Диаграмма должна быть ограничена полигоном, а алгоритм должен работать в O(n log n)
.
Моя идея состояла в том, чтобы заполнить полигон, проверяя случайные точки внутри ограничивающего прямоугольника полигона и беря только точки внутри полигона, затем строим на них вороной и затем обрезаем края диаграммы, выходящие из полигона.
Проблема в том, что проверка случайных точек и отсечение краев — это O(n^2)
.
Можно ли это сделать в boost, или есть другая небольшая библиотека или что-то еще?