Я ищу способ найти контур двух соседних многоугольников.найти контур смежных полигонов
Полигоны определяются списком точек, упорядоченных по вхождению в многоугольник. В моем случае использования нет перекрывающихся полигонов, между полигонами нет промежутков, и нет полигонов с «отверстиями».
Я хочу рассчитать схему двух полигонов без каких-либо «отверстий». Эти pictures показывают ожидаемые результаты.
Я знаю, что есть много библиотек для отсечения многоугольников, но для большинства из них производительность не очень хорошо, потому что они работают для любого вида многоугольника (с отверстиями, перекрывающихся многоугольников и т.д.) , В моем варианте использования алгоритм должен работать в режиме реального времени для большого количества полигонов (> 20 000). Как я могу наиболее эффективно рассчитать схему?
Попробуйте это ... http://stackoverflow.com/questions/83593/is-there -an-efficient-algorithm-to-generate-a-2d-вогнутый корпус –
Будет полезно: 1) избегать дублирования вершин; 2) установить обратное соотношение «эта вершина принадлежит этому/их контурову».Оттуда вы можете найти контуры, которые разделяют вершину и могут быть объединены, а обработка сократится до логического объединения двух списков вершин. –
Ив Дауст: После вашего совета я могу определить, какие вершины принадлежат обоим полигонам. Но как продолжать? Случай один на картинке довольно прост. Мне просто нужно вставить вершины из многоугольника 2 между двумя вершинами из многоугольника 1, которые принадлежат обоим полигонам, в правильном порядке. Случай 2 с рисунка сложнее. Если я удаляю контуры между полигонами, остается «отверстие». Как я могу определить, какие контуры принадлежат «дыре»? – heinzwilli