Специфические атрибуты и методы узла

К специфическим атрибутам узла относятся:

• тип предшествующего сегмента;

• тип узла;

• углы наклона направляющих рукояток;

• длины направляющих рукояток.

К специфическим методам узла относятся:

• создание узла с предшествующим ему сегментом;

• создание начального узла;

• выделение узла и группы узлов;

• смещение узла;

• разбиение сегмента узлом;

• разрезание узла;

• слияние узлов.

Реализация методов класса "узел" рассмотрена в разд. 2.3.3 и 2.3.4.

Замкнутость и односвязность

Как уже отмечалось, узлы в составе линии могут относиться к одной из двух категорий: краевые и промежуточные. Замкнутой называется линия, не имеющая краевых узлов. Если такие углы есть, то линия незамкнутая. Важность этого специфического атрибута линии обусловлена тем, что только для замкнутых объектов класса «линия» при рендеринге отображаются атрибуты обводки (см. разд. 2.4.1).

...

Примечание

Следует иметь в виду, что иногда краевые узлы линии могут располагаться в одной точке. При этом визуально линия выглядит замкнутой, а фактически является незамкнутой.

На рис. 2.3.6 представлены примеры замкнутых и незамкнутых линий.

Специфические атрибуты и методы узла - student2.ru

Рис. 2.3.6. Замкнутые (слева) и незамкнутые (справа) линии

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

...

Примечание

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

Главная особенность соединенной линии – наличие в ней нескольких начальных узлов (по числу составляющих ее ветвей). Атрибуты обводки соединенной линии при рендеринге отображаются особым образом (см. разд. 2.4.1). На рис. 2.3.7 представлено несколько примеров соединенных линий.

Специфические атрибуты и методы узла - student2.ru

Рис. 2.3.7. Соединенные линии

Приемы построения

В большинстве векторных графических редакторов линии строятся одним из пяти нижеприведенных способов.

• Инструментом свободного рисования.

• Инструментом построения узлов.

• Инструментом построения ломаной линии.

• Преобразованием в линии примитивов или других графических объектов.

• Выполнением логических операций над линиями или другими графическими объектами.

Первые три способа являются различными реализациями последовательности применения двух специфических методов класса "линия": начального узла и создание узла с предшествующим ему сегментом.

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

Узлы и сегменты линии формируются автоматически в соответствии с настройкой инструмента. Главный параметр настройки – частота размещения узлов вдоль траектории. Чем она выше, тем точнее траектория преобразуется в линию и тем больше на этой линии получается узлов. Пользователь может влиять на частоту расположения узлов вдоль траектории, меняя скорость перемещения указывающего устройства.

Преимущество метода свободного рисования – сравнительная простота. Но у него есть существенные недостатки, важнейшие из которых – низкая точность работы, сложность и слабая структуризация построенной линии. Простота инструмента оборачивается невозможностью точного позиционирования узлов и задания желаемых значений их атрибутов. Большинство построенных этим методом линий требуют последующей корректировки приемами редактирования (см. разд. 2.3.4), которая затрудняется большим числом автоматически построенных узлов, зачастую ненужных для выявления формы линии.

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

• определил тип создаваемого угла;

• зафиксировал положение узла;

• зафиксировал направление и длину направляющих рукояток узла.

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

...

Примечание

Иногда инструмент построения узлов называют "инструментом Безье" или "кривой Безье" по фамилии математика, первым предложившего современную информационную модель линии.

Инструмент построения ломаной линии – это упрощенная версия инструмента построения узлов: из всех типов узлов он «умеет» строить только точки излома между двумя прямолинейными сегментами. При этом пользователь может работать очень быстро, поскольку его действия по созданию каждого узла минимальны – достаточно определить его положение.

Создание линии путем преобразования графических объектов других классов рассматривается в разд. 2.3.5. Построение линии в результате логической операции над линиями и графическими объектами других классов рассматривается в разд. 2.3.6.

Приемы редактирования

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

Выделение узлов и сегментов

Перед выполнением любой операции редактирования необходимо выделить объект, подлежащий изменению. Так как узел является не самостоятельным объектом, а подобъектом класса «линия», для выделения узлов обычно предусмотрен специальный инструмент. Выделение выполняется либо щелчком на нужном узле, либо растягиванием рамки выделения вокруг одного или нескольких узлов.

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

Перемещение узла

Перемещение выделенного узла или группы узлов – основная операция редактирования линии, дающая возможность радикально изменить ее форму. Эта операция может выполняться с помощью интерактивного инструмента графического редактора или геометрическим преобразованием. На рис. 2.3.8 представлены результаты перемещения узлов замкнутой линии.

Специфические атрибуты и методы узла - student2.ru

Рис. 2.3.8. Перемещение узлов: а – исходное состояние; б – начальный узел смещен вниз; в – боковые узлы выровнены по вертикальной координате; г – верхний и нижний узлы зеркально отображены относительно горизонтальной оси

Разрезание и слияние узлов

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

Операция слияния применима только к краевым узлам линии или ветвей соединенной линии. В операции могут участвовать только два краевых узла, и они должны принадлежать одной линии. При слиянии краевых узлов одной ветви она становится замкнутой, при слиянии краевых узлов, принадлежащих разным ветвям одной соединенной линии, эти ветви соединяются в одну.

Добавление и удаление узла

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

Операция удаления узла выполняется способом параметризации. Выделенный узел удаляется, а соответствующий ему сегмент присоединяется к предшествующему. При этом направляющие рукоятки смежных со вновь образованным сегментом узлов автоматически настраиваются так, чтобы изменение формы линии в результате удаления узла было бы минимальным. При удалении краевого узла удаляется и смежный с ним сегмент линии.

...

Примечание

Возможно одновременное удаление нескольких выделенных узлов.

Наши рекомендации