Под логическими операциями понимаются операции, подобные операциям над битами (байтами) в булевой алгебре. Это операции И (AND или Intersection), ИЛИ (OR или Union), НЕ (NOT или Difference), ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR). Результаты логических операций с полигонами показывают следующие рисунки.
Имеются два полигона: звезда и круг. Здесь subject - полигон, относительно которого проводится логическая операция, clip - второй полигон, участвующий в логической операции.
Применим к этим полигонам логическую операцию И. Зелёным цветом показан результат логической операции. Таким образом, в результат войдут области, принадлежащие одновременно обоим полигонам.
Применим к полигонам логическую операцию ИЛИ. Видно, что в результат вошли области, принадлежащие любому из полигонов.
Применим к полигонам логическую операцию НЕ. Результат - области, принадлежащие первому полигону, но не принадлежащие второму. Здесь важно, какой из полигонов имеет статус subject, а какой - clip.
Применим к полигонам логическую операцию ИСКЛЮЧАЮЩЕЕ ИЛИ. Результат - области, принадлежащие только одному из полигонов. Если полигоны не пересекаются, результат будет идентичен результату логической операции ИЛИ.
Кроме описанных логических операций в программе имеется ещё одна операция Group. Визуально она идентична операции ИЛИ, но есть значительные отличия.
Если полигоны пересекаются, результатом операции ИЛИ будет один новый полигон, а результатом операции Group будут по-прежнему несколько полигонов, условно объединённых в мультиполигон. Мультиполигон может содержать любое количество полигонов. Свойства всех полигонов, входящих в мультиполигон, одинаковы. Все они одновременно выводятся на экран, используются в качестве выделенной области и т. д.
Если полигоны не пересекаются, результаты операций ИЛИ и Group будут одинаковы.
Также следует учитывать, что при всех логических операциях, кроме Group, происходит некоторое «округление» координат вершин полигонов, из-за чего полученные новые полигоны будут иметь вершины, не совсем совпадающие с вершинами исходных полигонов. Более того, в некоторых случаях (в основном при самопересечениях полигона) возможно образование так называемых «дырок». Дырка - это замкнутый полигон, находящийся внутри другого замкнутого полигона. На сегодняшний день дырки программой не обрабатываются, то есть игнорируются, однако их количество считается и указывается в сообщении о завершении логической операции.
В случае операции Group координаты вершин никаких изменений не претерпевают, поэтому операция Group выполняется быстрее, чем ИЛИ. В результате операции Group дырки не образуются.
Результаты логических операций могут быть использованы для Операций с выделенной областью, то есть для загрузки, копирования, удаления, экспорта и пр. Кроме того, результаты могут быть сохранены в базе меток для последующего использования.
В логических операциях может участвовать любое количество полигонов. Нужно лишь учитывать, что логическая операция с каждым последующим полигоном из списка проводится не над результатом предыдущей операции, а над первым в списке полигоном (subject).
Для проведения логических операций с полигонами следует прежде всего добавить в список участвующие полигоны. Это можно сделать четырьмя способами:
Если несколько полигонов накладываются друг на друга в точке щелчка мышью, то все они будут добавлены в список. «Лишние» полигоны можно либо удалить из списка средствами рассматриваемой панели, либо предварительно отключить в окне Управление метками.
С левой стороны экрана откроется панель Слияние полигонов (если она ещё не открыта). Панель можно растягивать по горизонтали, а также делать постоянно видимой или убирать с экрана через меню Вид→Панели.
Первому в списке полигону автоматически присваивается статус subject.
Остальным полигонам в списке присваивается статус clip.
В круглых скобках указывается, одиночный это полигон (Single), или мультиполигон (Multi).
Панель Слияние полигонов имеет несколько кнопок плюс выпадающий список. Рассмотрим назначение этих органов управления. Начнём слева направо.
В окне сообщения о результате логической операции указывается общее количество созданных полигонов и «дырок». Если в результате логической операции получилось более одного полигона, то в базе меток они будут сохранены как мультиполигон.
Допустить мы, что из нас интересуют снимки, покрывающие части лицевой формы
а полигон, описывающий нужный снимок - как clip, и применить логическую операцию НЕ.