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

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

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

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

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

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

где Ад, Вд, Сд, Dд, Ед и Fд — величины, которые могут быть функциями от координат хш, уш, zш, широты и долготы. Рассмотрим некоторые примеры (рис. 5.16—5.22).

Рис. 5.16. Эллипсоиды

Рис. 5.17. Наполовину эллипсоид, наполовину — шар

Рис. 5.18. Верхняя часть — вогнутый эллипсоид

Рис. 5.19. Половинки шара разнесены

[.

6 г

Рис. 5.20. "Груша"

Рис. 5.21. "Капля"

Рис. 5.22. Это не тор

В рассмотренных выше примерах для деформации формы шара были исполь­зованы преобразования координат только по оси z. В нижеследующих при­мерах выполняются преобразования также и координат*, у (рис. 5.23—5.27).

Рис. 5.23. Сдвиг по х пропорционально квадрату z

Рис. 5.24. Сдвиг по х пропорционально кубу z

1

Рис. 5.25. Сдвиг пропорционален квадрату широты :

Рис. 5.26. Модуляция х, у синусом долготы

Рис. 5.27. "Чеснок"

5.2. Цилиндр

Здесь мы будем использовать формулы параметрического описания поверхности цилиндра. В одной из возможных разно­видностей такого описания применяются следующие параметры — долгота (l) и вы­сота (h).

где l = 0...360°, h =-0.5... 0.5. Величинами R и Н обозначим соответст­ венно радиус и общую высоту цилиндра (рис. 5.28). Рис. 5.28. Цилиндр

Каркасное изображение

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

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

Рис. 5.29. Каркас

Удаление невидимых точек

На рис. 5.30 показано изображение цилиндра в двух вариантах— с верхней крышкой и без.

Рис. 5.30. Показ с удалением невидимых точек

В обоих случаях для создания иллюзии объемности здесь выделены черным цветом видимые ребра аппроксимирующего многогранника. Для показа по­верхности многогранника с крышкой достаточно показать ребра граней пе­редней стороны и крышку. Задние грани являются невидимыми (рис. 5.31).

Если верхняя крышка отсутствует, то видимыми являются все грани. В этом случае следует рисовать объект, начиная с самых дальних граней задней сто­роны.

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

Рис. 5.31. Расположение задних граней. Рис. 5.32. Порядок

вывода граней

Долгота дальней точки определяется расположением камеры:

где [... ] — целая часть

Такой метод сортировки граней можно использо­вать не только для цилиндра, но и для достаточно широкого класса поверхностей. На рис. 5.33 пока­зан пример поверхности вращения, изображенной описанным выше методом. Такая поверхность по­добна цилиндру. Единственное отличие здесь со­ стоит в том, что боковая поверхность криволиней- Рис 5 33 поверхность на по вертикали, поэтому для аппроксимации че- вращения

тырехугольными гранями следует использовать

двойной цикл - как по долготе (l), так и по высоте (h). Подобные пример мы рассмотрим несколько позже.

Освещенный многогранник

Здесь мы будем рассматривать изображение боковой поверхности цилиндра, аппроксимированного многогранником. Грани нужно изображать цветом в соответствии с выбранной моделью отражения. Мы будем рассматривать ци­линдр без крышек. Это позволяет наглядно проиллюстрировать проблемы показа поверхностей, для которых могут быть видимыми обе стороны.

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

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

;Для диффузного отражения цвет грани определяется значением косинуса уг­ла между лучом источника света и нормалью к поверхности. Одним из вари­антов решения проблемы является взятие модуля косинуса, если косинус от­рицательный. Это можно делать, когда положение источника света совпадает с положением камеры. На рис. 5.34 показано несколько вариантов задания направления нормалей.

Рис. 5.34. Варианты выбора направления нормалей

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

Рис. 5.35. Аппроксимация боковой поверхности плоскими гранями

Гладкая боковая поверхность

Рассмотрим один из алгоритмов изображения гладкой боковой поверхности цилиндра — рисо­вание вертикальными линиями. На рис. 5.36 по­казаны: вид сверху (ось z мировых координат направлена на нас), полутоновое изображение поверхности в аксонометрической проекции и направление осей мировых координат (х, у, z). Положение камеры здесь задано одним углом β Источник света располагается так же, как и ка­мера. В этом случае цвет пикселов вертикали бо­ковой поверхности определяется коэффициентом отражения

где R — радиус цилиндра. Вдоль любой вертика­ ли боковой поверхности цвет пикселов здесь _ _ „_ „

т. Рис. 5.36. Рисование

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

h = Н sin p

Определяем цвет крышки (clrO) по значению cos P for (х = 0; x<=R; x++) {

у = корень квадратный из ( R2 - х2 ) к = у / R

Определяем цвет боковой поверхности (clr) в зависимости от к

у ж у COS P

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

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

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

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

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

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

>

Здесь (хс, ус) — экранные координаты центра цилиндра.

Входе работы этого алгоритма вычисляются координаты точек эллипса для одного квадранта. Вначале определяется координата у для круга, а затем она умножается на коэффициент сжатия эллипса (cosβ). Определение величины cosβ целесообразно вынести за цикл — вычислить ее один раз в начале ра­боты. В теле цикла нужно вычислять квадратный корень и выполнять не­сколько операций умножения и деления. Хотя эти операции являются мед­ленными, но они выполняются сразу для нескольких пикселов, расположен­ных по симметричным вертикалям. Чем длиннее вертикали, тем меньшую часть от общего времени вывода составляют такие операции (поэтому не обязательно для вычисления точек эллипса использовать алгоритм Брезенхэма — хотя почему бы и нет?). Поскольку собственно вертикаль рисуется дос­таточно быстро, то данный алгоритм может успешно конкурировать по бы­стродействию с алгоритмами полигонального вывода. Еще одно полезное свойство — высокое качество рисования гладкой боковой поверхности. Не­достатком данного алгоритма является показ только вертикального располо­жения цилиндра, в то время как полигональную форму можно свободно по­ворачивать в пространстве.

Следует учитывать, что данный алгоритм можно использовать для углов на­клона камеры β от 0 до 90° (вид сверху). Этим и объясняется рисование толь­ко верхней крышки. Для вида снизу (β от 90 до 180°) необходимо показы­вать нижнюю крышку (верхнюю не нужно, она становится невидимой). Алгоритм легко обобщить.

Если цилиндр является отдельным элементом некоторой сложной сцены, то при выводе, например, с использованием Z-буфера необ­ходимо соответствующим образом построить цикл вывода вертикалей.

Теперь рассмотрим произвольное располо­жение источника света. Как и прежде, будем рассматривать только один точечный источ­ник, расположенный в бесконечности. Пусть расположение источника описывается двумя углами наклона с и βс). Положение каме­ры будем задавать двумя углами наклона — и β). Для простоты вначале положим угол поворота камеры а = 0.

На рис. 5.37 изображен цилиндр, освещенный

сбоку. Здесь показана только боковая по- Рис. 5.37. Освещение слева

верхность — без верхней и нижней крышек. Это более сложный вариант по­каза, поскольку нужно рисовать и внутреннюю часть поверхности.

Рассмотрим четыре точки, расположенные симметрично на поверхности ци­линдра. Для первой точки угол между нормалью к боковой поверхности и лучом от источника света составляет φ1= φ - ас. Для второй точки анало­гичный угол равен φ 2 = φ - ас. Поскольку точки 3 и 4 показываются с внут­ренней стороны поверхности, то их нормали совпадают по направлению с нормалями соответственно в точках 1 и 2. Поэтому φ 3 = φ 1 и φ 4 = φ 2.

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

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