Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
voprosy_otvety_1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
63.19 Mб
Скачать

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

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

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

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

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

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

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

Первые три способа яв.ляются различными реализациями последовательности применения двух

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Изменение типа узла или сегмента

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

Перемещение направляющих рукояток узла

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

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

Средний столбец соответствует перемещению направляющей рукоятки узла типа "сглаженный". Разворот нижней и верхней направ.ляющих рукояток идентичен. Из-за этого гладкость кривой в промежуточном узле сохранилась. Длина верхней управляющей рукоятки осталась неизменной, из-за чего симметрия кривой нарушилась.

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