2016-07-25 9 views
0

У меня возникла проблема относительно «разбиения»/подмножества полигонов на регионы (более крупные полигоны), чтобы каждый регион имел непересекающиеся значимые элементы.Как разделять/разбивать полигоны на существующие регионы?

enter image description here
К примеру, у нас есть следующие регионы/многоугольники. В данный момент мы знаем только форму одной области (скажем, R1 на данный момент). Ясно, что L3 будет принадлежать R1. Как насчет L1, L2 и P1? Я думал о создании ограничивающих прямоугольников вокруг них и проверял, соответствует ли юго-восточная координата (minX и minY) R1. Таким образом, L1 будет принадлежать R2, хотя он даже не пересекает R2.

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

+0

Можете ли вы рассказать о том, как появляются новые регионы. Действительно ли все регионы указаны в начале, поскольку вы упоминаете, что сначала указывается только R1? Вы хотите разбить элементы на границе региона или какие намерения там? – gue

+0

Регионы появляются, выполняя объединение на более мелких полигонах. У меня есть все доступные маленькие полигоны, но «регионы» должны обрабатываться индивидуально. Я не хочу разделять/«вырезать» элементы, но более или менее сказать, что элементы (L1, L2 и L2 и т. Д.) Должны принадлежать или не быть R1. Для элементов, находящихся внутри этих регионов, ясно, что они должны принадлежать, но как следует относиться к тем, кто пересекает границу? – danimihalca

+0

Извините, мне все еще не ясно. Таким образом, вы разбиваете большие полигоны на регионы. Могу ли я предположить, что R1, R2, R3 и R4 являются областями внутри того же самого большого многоугольника? Это разбиение (черные штриховые/сплошные линии) выглядит (немного), как диаграмма ворона. Если да, почему бы не использовать одно и то же разбиение на элементы внутри. А именно, обновление диаграммы путем добавления элементов. В противном случае, если у вас есть разделение, вы можете просто ссылаться на пересекающийся объект (ы) из каждого региона. – gue

ответ

0

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

В частности, взглянуть на Sutherland-Hodgman и Weiler-Atherton техники.

Некоторая оптимизация возможна, если разрешена предварительная обработка окон (при наличии много топических полигонов для одних и тех же окон) с использованием методов scanline. Это немного сложнее.

Случай с элементами линейного сегмента немного проще.