У меня есть набор непересекающихся полигонов.Эти многоугольники могут иметь общие узлы, ребра, но строго не перекрывать друг друга.
Теперь я собираюсь объединить их, используя технику триангуляции с ограниченным Делоне (CDT).Я могу получить сетку без проблем.
Моя проблема в том, что после сетки я хочу знать, какой элемент сетки принадлежит какому исходному многоугольнику.Мой текущий подход заключается в том, чтобы вычислить центроид для каждого элемента сетки и проверить, в какой из исходных многоугольников попадает этот центроид.Но мне не нравится этот подход, так как он требует значительных вычислительных ресурсов.
Есть ли эффективные способы сделать это (с точки зрения времени выполнения Big O)?В моих проектах задействованы десятки тысяч полигонов, и я не хочу, чтобы скорость замедлялась.
Редактировать: Убедитесь, что все вершины в элементе сетки имеют общую грань, работать не будет, потому что есть случаи, когда все вершины могут иметь более одной общей грани, как показано ниже (пунктирная линия).линия образует элемент сетки, вершины которого имеют 2 общие грани):