Векторная графика в пакете FreeHand 9.0



Объединение открытых объектов


Операцию объединения можно применить и к открытым (незамкнутым) объектам. Такие объекты создаются при помощи инструментов Line (Линия), Freehand (Рисование), Реn (Перо), Bezigon (Безигон), Knife (Нож), а также некоторых операций, например, Split и дополнений (Xtras) программы.
При объединении открытых объектов происходит соединение узлов составляющих и получается новый открытый объект. Если узлы находятся на некотором удалении друг от друга, то они соединяются прямой линией. Пример такого объединения показан на рис. 3-5 слева. При наложении граничных узлов объектов узлы отождествляются, как показано на рис. 3-5 справа. Наложение узлов не обязательно должно выполняться с идеальной точностью, достаточно попасть указателем в некоторую окрестность, диаметр которой задается в поле Snap distance диалогового окна Preferences.



3-5. Объединение открытых объектов

При объединении двух открытых объектов результирующий контур приобретает параметры нижнего объекта. Соединение узлов происходит по правилу "ближайшего соседа". Результаты объединения нескольких открытых контуров предсказать сложнее. Правило объединения узлов не меняется, но часто по виду фигур трудно определить ближайших соседей, для этого нужна информация о расстояниях. Обводка результирующего контура зависит от некоторых свойств исходных контуров как объектов языка PostScript. Чтобы не вдаваться в тонкости языка, в большинстве практических случаев можно пользоваться следующим правилом. Результирующий контур приобретает параметры обводки одного из своих граничных элементов. Граничным называется элемент, который соединен с граничным узлом.
Рассмотрим левую часть рисунка 3-6. Определить визуально ближайших соседей для этого примера нетрудно. Это пары узлов 1 и 2, 3 и 4, 5 и 6. Узлы 7 и 8 в результирующем контуре, видимо, будут граничными. Надо ожидать, что результирующий контур примет параметры обводки отрезка (1, 8) либо линии (6, 7). Результаты операции подтверждают предположение — на рис 3-6 справа показан результирующий открытый контур.



3-6. Объединение нескольких открытых объектов

Если обязательно требуется перенести на результат обводку некоторого составляющего контура, то можно объединять контуры попарно. Результаты объединения двух контуров всегда можно предсказать. Рис. 3-7 иллюстрирует процесс попарного объединения.



3-7. Попарное объединение объектов

Этот метод дает хорошие результаты и в тех случаях, когда требуется управлять соединением отдельных контуров.
Что же делать, если требуется соединить узлы, которые не являются ближайшими соседями, например узлы, 1 и 2 на рис. 3-8? Рецепт прост. Любым инструментом, например Line (Линия), рисуем линию, соединяющую точки 1 и 2, и применяем операцию Join к трем отрезкам.



3-8. Соединение удаленных вершин

Важно
Операция Join применяется к различным объектам, ее нельзя использовать для замыкания открытого контура. Чтобы превратить открытую фигуру в замкнутую, надо вызвать палитру Object Inspector (<Ctrl>+<I>) и выставить в ней переключатель Closed (Замыкание). Результат будет зависеть от положения концевых узлов фигуры. Если узлы находятся достаточно близко, то они сольются. Удаленные узлы будут соединены при помощи прямой линии, как показано на рис. 3-9.


Существует еще один способ объединения концевых узлов открытой фигуры. Концевые узлы, принадлежащие одной фигуре, автоматически отождествляются, если в процессе рисования расположить начальный и конечный узлы в одной точке монтажного стола. Нарисованный открытый контур можно замкнуть, если захватить указателем один из граничных узлов фигуры и совместить его с другим граничным узлом.
Процедура замыкания фигуры значительно облегчается, если выполнять ее в режиме захвата узлов Snap to Point. В этом режиме узлы, расположенные в небольшой окрестности, притягиваются друг к другу и автоматически совмещаются. Захват действует как на узлы, принадлежащие одной фигуре, так и на узлы разных фигур.
Режим захвата можно включить командой главного меню View|Snap to Point или нажатием клавиш <Ctrl>+<Shift>+<2>. Размер зоны захвата есть величина регулируемая, она задается в поле Snap distance диалогового окна Preferences (<Ctrl>+<Shift>+<D>).



3-9. Замыкание открытого контура

Важно
В основных настройках программы есть опция Join non-touching paths, которая влияет на результаты операции Join. Если она включена, то команда Join соединяет граничные узлы любых отмеченных контуров независимо от их расположения на монтажном столе. При выключенной опции команда действует только на те узлы, которые находятся в области захвата, размеры которой задаются в поле Snap distance. Получить доступ к этой настройке можно по команде File|Preferences|Object. После установки и первого запуска программы опция включена по умолчанию.


Следует отметить, что объекты, которые продуцирует операция Join, представляют собой открытые контуры. Они не обладают особыми свойствами и отличаются от рисованных объектов только технологией получения.