Главная » Просмотр файлов » OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д

OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475), страница 23

Файл №1124475 OpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (Раздаточные материалы) 23 страницаOpenGL. Руководство по программированию (Библиотека программиста) (2006). Ву М., Девис Т., Нейдер Дж., Шрайнер Д (1124475) страница 232019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Это позволяет в конце процесса преобразования с помощью значений г правильно передать глубину (удаленне от экрана). Одно из применений глубины — устранение ненужных прорисовок. Предположим, что существуют дне вершины с одинаковыми координатами х и у, по с различными координатами г. Исходя из этой информации, Ореном решает, какая из поверхностей закрывается другой, что помогает избежать прорисовок скрытых поверхностей, (См. главы 5 и (О для получения дополнительной информации об этой технологии, называемой удаление невидимых поверхностен.) Для более полного понимания текущей главы вам необходимо знание действий с матрицами. Если вы хотите пополнить свои знания в этой области, можете взять любой учебник по линейной алгебре. Пример: рисование куба Программа из листинге 3.! рисует куб, масштабируемый модельным преобразованием (рис.

3.3). Видовое преобразование к1и сооклс() позиционирует камеру и направляет ее туда, где рисуется куб. Также определяются преобразования проекции и окна просмотра. Оставшуюся часть этого раздела занимает рассмотрение листинга 3.! и краткое объяснение использования команл преобразования. Поскедующие разделы содержат полное, детальное обсуждение всех команд преобрззования Орепо!., Листинг 3.1.

Трансформированный куб: сиЬе.с чо(б (п!1(чо!П) ( К)С)евсее(вг(О.О, О.О. О.О, О.О>; К15ьабенобе1(ОС ГСАТ); ) че(В б(зр1ау(чазб) ( К(С)евг(ОС СО(Он Вбрр(а В(т>! К>Се)рг>((1.В, 1.О, 1.О>; 51соэа1бепт!1уо; /* очищаем матрицу '/ /" видовое преобразование К)ч(вва/(1(О.О, О.О, 5.О, В,О, О.О, О.О, О.О, ).О, О.О>; К15са1е((1.В, 2.0, 1.0); /* модельное преобразование '/ К(ч(Н(гееиЬе(1.В>; К(Г)вен(); продолжвнов р 102 Глава 3 ° Визуализация Листинг 3.1 (продолжение) чо!б геьларе(!пС и, !пС П) ( 91Н!еирпгС(0, О, (6[5!се!) и, (6Сэ)се!) П); 91Матг)хМобе(6С РЙО)ЕСТ10М); 91Соаб1бепС(Су(); 91Ргиэтпм(-1.9.

1.0, - 1.9, 1.9, 1.5, 20.9)! 91Матг)хМобе(6С МООЕСН1Ей); ) (пс ма!и(!пс агзс, спаг*' агзч) ( 91НС1п(С(аагзс, агзч); 9[ос)п)св)эр)аумобе(6сет 51нбсе [ 6сцт абв); 91иС!п!Сй!пбои5!се(599, 500)'! 91ч(1п!Сй(пбоиРоэ)С!оп(199, 100); 91иСЕгеасей!пбои(агах[9]); !пчс(); 91иСО(эр1аугчпс(б(эр1ау); 9[п(аеэьарегипс(геэнаре): 91итна!пьоор(); гесчгп 0; Рис. З.З. Трансформированный куб Видовое преобразование Вспомним, что видовое преобразование аналогично размешепию и нацеливанию фотоаппарата.

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

Без загрузки единичной матрицы вы будете накладывать полученный результат на результат предыдущей операции преобразования. В некоторых случаях такие наложения необходимы, но в основном матрица должна сбрасываться. В листинге 3.1 после того, как матрица инициализирована, осуществляется видовое преобразование функцией 91исооКАС () . Аргументы этой функции определяют положение камеры (или взгляда), ее направление и угол наклона. Используемые в примере значения помещают камеру в точку пространства с координатами (О, О, 5), направляют осггическую систему на позицию (О, О, 0) и задают вектор ориентации (О, 1, 0) — направление от низа к верху основания пирамиды видимого объема.

Обзор: аналогия с камерой 103 Если функция я1псоохдг() не вызывается, действуют значения по умолчанию; то есть камера расположена в начале координат, указывает вниз вдоль оси я я имеет вектор ориентации (О, 1, О). В листинге 3.1 с помощью функции я1я(оохдг() камера перемешается на пять единиц по оси к (См. Раздел «Модельно-видовые преобразования» для получения дополнительной информации.) Модельное преобразование Модельное преобразование применяется для позиционирования модели и залаяяя ее орнснтации.

Например, вы можете повернуть, переместить или масштабировать модель — или реализовать некоторую комбинациго зтих операций. В листянге 3.1 для таких целей используется функция а15са1ет(). Ее аргументы апределяют, как осуществляется масштабирование по трем осям. Если все аргуиенты равны 1,0, она не имеет смысла. В результате работы программы куб растянут вдвое по оси у. Таким образом, если один из углов куба до цреобразоваиия взходился в точке (3.0, 3.0, 3.0), то после него угол переместился в точку (3.0, 6.0, 3.0). В результате мы получим не куб, а прямоугольный параллелепипед, В качестве упражнения замените в листинге 3.1 команду я1оьооКАГ() на функцию я1тгаля1асе() с аргументами (0.0, 0.0, -5.0).

Результат будет такой же, как я при использовании я1всоохяг(). Вы уже догадались, почему? Потому, что здесь вместо перемещения самой камеры (видовое преобразование), позволяющего захватить куб в объектив, мы подвинули куб относительно камеры (модельное преобразование). Эта двойственность объясняет, почему видовое я модельное преобразования обьединяют в модельпо-видовую ягатрицу перед тем, яак их выпошшть. (См. раздел «Модельно-видовые преобразования» для получеяия дополнительной информации.) Обратите внимание, что видовые п модельные преобразования включены в процедуру от вр1ау() вместе с прорисовкой куба В1игки геСобе(). Это удобно тем, что если, например, окно перемещается или масштабируется, о1яр1ау() при повторной прорисовке содержимого окна выполняет все нужные преобразования, что, гарантирует правильное отображение куба.

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

Это похоже на выбор между широкоугольным, обычным яли телескопическим объективом. С широкоугольным объективом вы можете сделать более широкий кадр, чем с телескопическим, но последний позволяет приблизить удаленные объекты. При использовании компьютерной графики вам яе нужно платить 10 000 долларов за 2000-миллиметровый телескопический объектив, достаточно задать меньшее значение для поля зрения. 104 Глава 3 ° Визуализация Дополнительно проекционное преобразование определяет, каким образом объекты проецируются на экран.

В ОрепОВ определены два основных типа проекций с наборами соответствующих команд. Первая — перспективная проекция; которая не то чтобы заглядывает в будущее, а позволяет видеть веши так, как мы привыкли в обычной жизни. Перспектива заставляет удаленные объекты казаться меньшими по размеру, чем близкие; например, она «вынуждает» сходиться железнодорожные рельсы. Если вам нужно создать реалистичное изображение, вам стоит выбрать перспективную проекцию, которая определяется в листинге 3.1 с помощью команды я1е ге з г иа () .

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

раадел «Преобразования проецирования».) Перед вызовом к1Р1озгоаО следует сделать ряд подготовительных операций. Как показано в процедуре гез паре () (листинг 3 1), первой выполняется команда к1Маг г!хиосе О со значение»1 аргумента 6( РЙО) ЕСТ10М. Это указывает, что текушая матрица определяет проекционное преобразование и что последующие преобразования работают с матрицей проек((ий. Как вы вилите, несколькими строками ниже снова вызгявается ц1Мах11хМосеО со значением аргумента 6Е М00Е (1(1ЕИ. Это означает, что все последующие преобразования затрагивают матрицу виловых преобразований, а не матрицу проекций. (См.

раздел «Управление стеком матриц».) Обратите внимание, что функция Е1ьоас1пепг)гу() используется для инициализации текущей матрицы проекции — для того, чтобы действовало только проекционное преобразование. Теперь можно вызвать я1Р1цвтиа() собственно для преобразования.

В данцол~ примере (листинг 3.1) преобразования проекции и окна просмотра объединены в процедуре ге з паре (), которая вызывается при создании окна на экране и всякий раз при его перемещении или изменении размера. Это разумно, поскольку как проецирование, так и вписывание в окно просмотра, — операции, связанные непосредственно с визуализацией и зависят от размеров окна па экране и соотношения его сторон. Упражнение Замените к1Е1озговО в листинге 3.1 на подобную ОШ-функцию я1оРегзресс1че () со значениями аргументов (60,0; 1,0; 1,5; 20,0). Затем поэкспериментируйте с различными величинами, особенно для параметров уопу и ах)эесг. Преобразование окна просмотра В совокупности преобразования проекции и окна просмотра определяют, как сцена отображается на экран компьютера.

Первое задает механизм отображения, Команды преобразования общего назначения 105 а окно просмотра отвечает за форму доступного экранного пространства, и, в аналогии с камерой, за размеры и местоположение фотографии — например, должна пн она быть увеличена или уменыпена. Аргументы функции к1Н( еиро г1() определяют начало координат доступного экранного пространства — в данном привере (О, 0) — и его ширину и высоту в пикселах. Это объясняет, почему данную команду вызывают в функции гезпаре(): если окно меняет размеры, область просмотра также лолжна быть изменена. Заметим, что часто ширина и высота приравниваются фактическим ширине и высоте вместо задания абсолютных разяеров. (См.

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

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

Тип файла
PDF-файл
Размер
56,35 Mb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

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