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