КГ_3глава (1024106), страница 4

Файл №1024106 КГ_3глава (Компьютерная графика) 4 страницаКГ_3глава (1024106) страница 42017-07-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

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

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

Рис. 3.19. Прямоугольное и круглое перья работают избыточно

Такие алгоритмы более эффективны для перьев в виде отрезков линий. В этом случае каждый пиксел рисуется только один раз. Но здесь важным является наклон изображаемой линии. Ширина пера зависит от наклона ;рис. 3.20).

Очевидно, горизонтальное перо не может рисовать толстую горизонтальную

1ИНИЮ.

Рис. 3.20. Перья в виде отрезков линий

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

При выводе толстых линий с использованием пера-отрезка линии заметны разрывы в углах полилиний и плохие концы (рис. 3.21).

Рис. 3.21. Вывод толстых линий с использованием пера-отрезка

Для решения таких проблем иногда используют другие алгоритмы вывода толстых линий. Например, вывод толстой полилинии можно выполнить как рисование полигона с заполнением (рис. 3.22).

Рис. 3.22. Пример толстой полилинии

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

Третья разновидность алгоритмов вывода толстых линий — рисование тол­стой линии последовательным наложением нескольких тонких линий, сме­щенных одна относительно второй.

Алгоритмы вывода пунктирной линии

Алгоритм для рисования тонкой пунктирной линии можно получить из алго­ритма вывода тонкой непрерывной линии

*

заменой процедуры вывода пиксела более сложной конструкцией:

В таком алгоритме используется новая переменная (C — счетчик пикселов линии. Если значение С удовлетворяет некоторому логическому условию, то рисуется пиксел заданного цвета с текущими координатами (х, у). Логическое условие будет определять стиль линии. Например, если условием будет чет­ность значения С, то получим линию из одиночных точек. Для рисования пунктирной линии можно анализировать остаток от деления С на S. Напри­мер, если рисовать пикселы линии только тогда, когда С mod S < S/2, то по­лучим пунктирную линию с длиной штрихов S/2 и с шагом S.

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

Алгоритм вывода толстой пунктирной линии

Объединив алгоритм для вывода толстой непрерывной линии и алгоритм дли тонкой пунктирной линии, можно получить следующий алгоритм:

Такой алгоритм достаточно прост. На практике используются и более изощренные алгоритмы.

3.7. Стиль заполнения. Кисть. Текстура

При выводе фигур могут использоваться различные стили заполнения. Для обозначения стилей заполнения, отличных от сплошного стиля, используют такие понятия, как кисть и текстура. Их можно считать синонимами, одна­ко понятие текстуры обычно используется применительно к трехмерным объектам, а кисть — для изображения двумерных объектов. Текстура — это стиль заполнения, закрашивание, которое имитирует сложную рельефную объемную поверхность, выполненную из какого-то материала.

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

Например, в алгоритме вывода полигонов пикселы заполнения рисуются в теле цикла горизонталей, а все другие операции предназначены для подсчета координат (x, у) этих пикселов. Сплошное заполнение означает, что цвет C всех пикселов одинаков, то есть C=const. Нам нужно как-то изменять цвет пикселов заполнения, чтобы получить определенный узор. Преобразуем ал­горитм заполнения следующим образом:

Функция f(x,y) будет определять стиль заполнения. Аргументами функции цвета являются координаты текущего пиксела заполнения. Однако в отдельных случаях эти аргументы не нужны. Например, если цвет С вычислять как случайное значение в определенных границах: С = random (), то можно

создать иллюзию шершавой матовой поверхности (рис. 3.23).

Рис. 3.23. Матовая поверхность Рис. 3.24. Штриховка

Другой стиль заполнения — штриховой (рис. 3.24). Для него функцию цвета также можно записать в аналитической форме:

где S— период, а Г— толщина штрихов, Сш— цвет штрихов, Сф— цвет

фона.

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

Зачастую при использовании кистей и текстур используется копирование не­больших растровых изображений. Такой алгоритм заполнения можно опи­сать вышеупомянутой общей схемой, если строку С=f(x, у) заменить двумя другими строками:

Преобразование координат пиксела заполнения (х, у) в координаты внутри образца кисти можно выполнить таким образом:

где т, п — размеры растра кисти соответственно по горизонтали и вертикали. При этом координаты т, yт) будут в диапазоне хт= 0...m - 1, ут= 0...п - 1 при любых значениях х и у. Таким образом, обеспечивается циклическое ко­пирование фрагментов кисти внутри области заполнения фигуры (рис. 3.25).

У

Рис. 3.25. Копирование растра кисти

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

Здесь можно использовать поразрядную операцию & (И). Еще один пример. Если необходимо вычислить X mod 256, а значение X за­писано в регистре АХ микропроцессора (совместимого с 80x86), то в качест­ве результата достаточно взять содержимое младшей байтовой части этого регистра — AL.

Для пикселов текстур часто употребляется название тексел. Растровые текстуры и кисти широко используются в современной компью­терной графике, в том числе и в 3D-графике. Для отображения трехмерных объектов часто используются полигональные поверхности, каждая грань отображается с наложенной текстурой. Поскольку объекты обычно показы­ваются с разных ракурсов — повороты, изменения размеров и тому подоб­ное, то необходимо соответственно трансформировать и каждую грань с тек­стурой. Для этого используются проективные текстуры.

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

где коэффициенты А, В, ... , F — константы при пересчете координат всех пикселов для отдельной текстурированной грани. Такое преобразование ко­ординат можно использовать, если привязать текстуру к грани по трем опор­ным точкам. Пример наложения проективной текстуры приведен на рис. 3.26.

Рис. 3.26. Наложение проективной текстуры на две грани объекта Привязывание по трем точкам соответствует уравнениям:

где i = 1, 2, 3. По известным координатам Тi, yТi и (хi, уi) можно найти ко­эффициенты А, В, ... , F, если решить систему линейных уравнений. Эта сис­тема распадается на две независимые системы третьего порядка. Для упро­щения записи заменим хТi на Xi a yТi на Yi

Характеристики

Тип файла
Документ
Размер
449,5 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее