Электронная библиотека » Дмитрий Миронов » » онлайн чтение - страница 11


  • Текст добавлен: 14 ноября 2013, 04:56


Автор книги: Дмитрий Миронов


Жанр: Техническая литература, Наука и Образование


сообщить о неприемлемом содержимом

Текущая страница: 11 (всего у книги 39 страниц) [доступный отрывок для чтения: 11 страниц]

Шрифт:
- 100% +
2.2.5. Стандартные фигуры

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

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

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

Рис. 2.2.12. Варианты стандартной фигуры, полученные изменением значений специфических атрибутов

Список новых терминов

• Параметризация

• Точка привязки

• Угол разворота

• Масштабное преобразование

• Стандартная фигура

Контрольные вопросы

1. В чем состоит операция параметризации графического объекта?

2. Какая точка графического объекта называется точкой привязки?

3. Каким образом измеряется угол разворота графического объекта?

4. Является ли масштабное преобразование изменением размеров графического объекта?

5. Каков результат масштабного преобразования с отрицательным коэффициентом?

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

7. Почему по внешнему виду графического объекта нельзя однозначно судить, к какому классу он относится?

8. Какие типы отображения эллипсов используются в компьютерной графике?

9. Для чего необходимо однозначное определение направления дуги эллипса?

10. Если у двух объектов одного класса значения всех параметров совпадают, то совпадают и отображения этих объектов. Верно ли обратное?

11. Чем отличаются вершины и углы многоугольника?

12. Что происходит при смещении дополнительной вершины многоугольника?

13. Что характеризует заострение лучей простой и сложной звезды?

14. Что позволяет объединить в один класс стандартные фигуры?

Темы для обсуждения

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

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

3. Аффинные преобразования и управляющая матрица аффинного преобразования.

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

2.3. Информационная модель линии

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

2.3.1. Линии, узлы и сегменты

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

Узлом называется точка на плоскости изображения, определяющая положение одного из концов сегмента кривой и его направление в месте выхода из узла. Сегментом называется часть линии, соединяющая два смежных узла. Эти два типа элементарных объектов неразрывно связаны, они не могут существовать в отрыве друг от друга или вне линии. В замкнутой линии (см. разд. 2.3.2) число узлов и сегментов одинаково, в незамкнутой – различается на единицу.

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

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

Примечание

По умолчанию начальным является тот узел, с которого началось построение линии. Если экземпляр класса "линия" был создан в результате преобразования из объекта иного класса (см. разд. 2.3.5), то начальный узел замкнутой линии задается произвольно.

Сегменты линии подразделяются на прямолинейные и криволинейные. Прямолинейным называется сегмент, представляющий собой отрезок прямой линии, криволинейным – сегмент, в любой точке которого радиус кривизны отличен от бесконечности. На рис. 2.3.1 представлены сегменты и узлы незамкнутой и замкнутой линий.

Рис. 2.3.1. Сегменты и узлы незамкнутой и замкнутой линий


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

Информационная модель узла и ее графическое представление

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

Рис. 2.3.2. Графическое представление информационной модели выделенного узла


Примечание

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

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

Примечание

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

Сочетание геометрических характеристик направляющих рукояток и смежных с узлом сегментов определяют тип этого узла.

Типы узлов

Различают три типа узлов:

• точки излома;

• сглаженные узлы;

• симметричные узлы.

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

Рис. 2.3.3. Примеры точек излома: на стыке двух прямолинейных сегментов, на стыке прямолинейного и криволинейного сегментов, на стыке криволинейных сегментов


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

Рис. 2.3.4. Примеры сглаженных узлов: на стыке прямолинейного и криволинейного сегментов, на стыке криволинейных сегментов


Примечание

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

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

Рис. 2.3.5. Пример симметричного узла

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

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

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

• тип узла;

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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


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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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


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

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

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

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

Внимание! Это не конец книги.

Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!

Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 9 10 11
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации