Перекрывающиеся полигоны на 2D плоскости

я хотел бы создать динамическую структуру данных, которая может содержать список полигонов и возвратить список полигонов, который перекрывает указанный прямоугольник.

я изучил лучшие деревья (и деревья квадрантов), но они, кажется, не работают слишком хорошо, когда полигоны накладываются в большой степени.

какие-либо хорошие идеи, которые я должен проверить, прежде чем я прокручу свою собственную ерунду?

править

позволяет предполагают, что все полигоны нормальны не повернутые прямоугольники. Я готов получить удар (точка в тесте полигона) во время тестов точки (я мог бы делать его так или иначе), и во время теста региона, получая их ограничительные рамки так же хорошо. только небольшой процент их на самом деле не перекроет рассматриваемый регион.

1
задан aepurniet 10 August 2010 в 12:06
поделиться

3 ответа

я только что написал обычное дерево квадрантов, которое позволяло каждому листовому узлу содержать неограниченное количество полигонов, если пересечение границ листа и границ каждого полигона в ведре были эквивалентны. в противном случае листовые узлы ограничены 8 полигонами перед разделением.

0
ответ дан 2 September 2019 в 22:18
поделиться

Я бы посмотрел на двумерные сегментные графики задержки . См. Также Многоугольники Nef . CGAL имеет множество операций над полигонами . Ответы на этот вопрос также могут иметь значение

Изменить Если ваши многоугольники представляют собой не повернутые прямоугольники, см. R-Trees

2
ответ дан 2 September 2019 в 22:18
поделиться

Зачем вы сами это пишете? Java предлагает сложные тесты пересечения. Вы можете преобразовать структуры данных многоугольника и прямоугольника в Java.awt.geom.Area и затем вызвать метод Area.intersect(), который сделает всю математику за вас.

Он также позаботится обо всех редко встречающихся (но все еще важных) особых случаях, которые очень неприятно ловить.

0
ответ дан 2 September 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: