КГ_5глава (Компьютерная графика), страница 5

2017-07-12СтудИзба

Описание файла

Файл "КГ_5глава" внутри архива находится в папке "Компьютерная графика". Документ из архива "Компьютерная графика", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "компьютерная графика" в общих файлах.

Онлайн просмотр документа "КГ_5глава"

Текст 5 страницы из документа "КГ_5глава"

Находим коэффициент отражения ki = cos <pi sin pe

если ki < 0, то ki = О

Находим коэффициент отражения кг = cos фг sin pc

если кг < 0, то кг = О

Находим цвета clrl и clr2, соответствующие ki и кг

Рисование двух симметричных вертикалей задней стороны:

вертикаль от (хс+х, ус-у - h/2) до (хс+х, ус-у + h/2) цветом clr2 вертикаль от (хс-х, ус-у - h/2) до (хс-х, ус-у + h/2) цветом clrl

Рисование двух симметричных вертикалей передней стороны:

вертикаль от (хс+х, ус+у - h/2) до (хс+х, ус+у + Ь/2) цветом clrl вертикаль от (хс-х, ус+у - h/2) до (хс-х, ус+у + h/2) цветом clr2 }

Здесь для упрощения записи алгоритма использована идеальная диффузная модель отражения света. Вначале определяются коэффициенты ki и к2, кото­рые затем можно использовать для вычисления цвета, например, в виде ком­понент R, G, В:

где Ru, Gu и Вu — компоненты описания цвета поверхности цилиндра.

Вертикали выводятся сначала для задней стороны боковой поверхности, а затем для передней. При использовании Z-буфера порядок вывода безразличен.

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

Наложение текстуры

В некоторой степени, компьютерная графика — это создание иллюзий. Тек­стуры наглядно это демонстрируют (рис. 5.38). Разве бывают кирпичи округ­лой формы? Крайний справа цилиндр "выложен" именно такими кирпичами. При наложении текстуры плоская карта-развертка растрового образца тек­стуры плавно искривляется, следуя гладкой форме боковой поверхности.

Рис. 5.38. Наложение текстур на боковую поверхность цилиндра

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

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

Кроме того, и для текстурированных объектов очень важно соблюдать зако­ны отражения. Если убрать градиентную закраску у четырех цилиндров, изображенных на рис. 5.38, то для первых трех (кроме "кирпичного") почти полностью исчезнет иллюзия объемности.

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

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

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

Рис. 5.39. Наложение текстуры вертикалями

Общий цикл рисования боковой поверхности можно представить себе сле­дующим образом. Вначале определяются координаты текущей вертикали за­крашивания в экранной системе координат. Пусть эти координаты составля­ют (х, у1) - (х, у2). Необходимо также вычислить угловую координату этой вертикали {<р). По значению угла ср определяем координату Х Т в шаблоне тек­стуры

где НоrТех — горизонтальный размер шаблона текстуры. Угол φ измеряется в градусах.

Одна вертикаль закрашивания (х, у1) — (х, у2) соответствует вертикали с ко­ординатами Т, 0) - Т, VertTex - 1) в шаблоне текстуры, где VertTex — раз­мер текстуры по вертикали.

Рисование одной вертикали боковой поверхности можно представить как цикл, в ходе которого последовательно рисуются пикселы с координатами от у1 до у2. Для пиксела в точке (x, у) определяются соответствующие коор­динаты Т, YT) в шаблоне текстуры, причем Х Т нам уже известна, а коорди­ната YT вычисляется по формуле:

Затем в шаблоне текстуры определяется цвет точки Т, YT). После этого вы бранным цветом рисуется пиксел с координатами(x, у) в основном растре. Формулы вычисления координат можно преобразовать к следующему виду:

где А, В, С и D — константы для всех пикселов одной вертикали. Таким об разом, для каждого пиксела вертикали приходится выполнять несколько one раций умножения и сложения. Для ускорения текстурирования можно построить Инкрементный алгоритм.

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

Вариации формы цилиндра

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

величины Н и R — это константы. Рассмотрим примеры поверхностей, когда! радиус R является функцией параметров h и l, то есть R - R(h,l).

Если радиус зависит только от высоты, то есть R = R{h), то это соответствуя поверхности вращения относительно оси z. Задание конкретной функции R{h) для описания какой-либо поверхности напоминает вытачивание цилиндрической заготовки на токарном станке. На рис. 5.40 приведены примеры поверхностей вращения (во всех случаях параметр h изменяется от -0.5 до +0.5).

где R1 и R2 — радиусы нижней и верхней части соответственно. При R2 =0 получаем конус. Очевидно, что при аппроксимации многогранниками конус следует рисовать уже не четырехугольными, а треугольными гранями.

Рис. 5.40. Примеры поверхностей Рис. 5.41. Еще пример поверхности

вращения вращения

Для поверхности, изображенной на рис. 5.41, при вычислении координат вершин четырехугольных граней необходимо использовать уже два цикла — по l и по h.

M

Например:

В данном случае вдоль вертикали располагаются по две грани (dh = 0.5).

В следующих примерах для создания иллюзии гладкой поверхности нужно использовать большее число граней (рис. 5.42, 5.43).

Рис. 5.42. Сетка граней и закрашивание методом Гуро

Рис. 5.43. Еще две поверхности вращения

Следующую группу составляют такие вариации формы цилиндра, когда ра­диус зависит только от долготы, то есть R = R(l). Пример подобной поверх­ности показан на рис. 5.44.

И, наконец, последнюю разновидность вариаций данного типа, согласно на­шей классификации, представляют поверхности R = R(h, l). Пример такой поверхности приведен на рис. 5.45.

Рис. 5.44. Другая разновидность вариаций формы цилиндра

Рис. 5.45. Винтовая поверхность R = R(h, I)

5.3. Тор

Функции параметрического описания поверхности тора запишем в следую­щем виде

где R u r — большой и малый радиусы, φ и ω — широта и долгота. Для замк­нутой поверхности углы φ и ω должны изменяться в полном круговом диапа­зоне, например, от 0 до 360° или от -180° до +180°.

На рис. 5.46, 5.47 показаны различные способы изображения тора.

Рис. 5.46. Простейшее изображение тора: а — каркас; б — поверхность с удаленными невидимыми точками

Рис. 5.47. Многогранники, диффузная модель отражения: а — обычное закрашивание; б — интерполяция по методу Гуро '

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

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

полностью аналогичен способу, рассмотрен- _ _ .„ _

J v * Рис. 5.48. Тор с текстурой

ному выше для шара. Пример подобного

текстурирования приведен на рис. 5.48.

Рассматривая в предыдущих разделах шар и цилиндр, мы наряду с полиго­нальными способами пытались анализировать и другие способы изображения. Например, рисование цилиндра вертикальными линиями. Для тора изо; брести эффективный специальный алгоритм графического вывода, вероятно достаточно сложно. Во всяком случае, автору он неизвестен. Хотя во второй части этой книги есть пример программирования одного "неполигонального1! способа рисования тора. Можно представить тор как след движения шара, Если шар перемещается с достаточно малым шагом, то след получается весьма похожим на тор. Впрочем, данный пример рисования приведен в кни­ге не как рекомендуемый способ изображения тора, а как пример изображе­ния движущихся шариков. По быстродействию данный способ изображении тора весьма плох из-за того, что приходится многократно рисовать одни и те же точки (подобные аспекты мы рассматривали в главе 3 при обсуждении алгоритмов рисования толстых линий).

Вариации формы тора

На рис. 5.49 изображена поверхность многогранника, для которой парамет­рические формулы такие же, как и для тора. Единственное отличие здесь в том, что широта φ изменяется в диапазоне от -135° до +225° с шагом dφ =90°.

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