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

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

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

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

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

Это аналогично вызову функции 1<вьоохл<(Е.Е. Е,О, О.Е, Е.Е, Е.О, -1ЕЕ.Е, О.О. 1.Е, Е,Е1; Значение з для линии взгляда равно -100,0, но может быть любым отрицательным зна <ением г, так как линия взгляда останется такой же. Подобный вызов не имеет смысла, поскольку этн значения приняты по ум«лчанию (рис.

3.11). (Ливни, исходящие из камеры, определяют объем видимости, то есть поле зрейия.) Рис. 3.11. Положение камеры по умолчанию На рис. 3.12 изображен типичный результат использования функции а1ц ЬоокАт(). Положение камеры определяется точкой (4, 2, 1), Камера нацелена на модель, то есть координаты точки на линии взгляда равны (2, 4, -3). Вектор ориентации (2, 2, — 1) поворачивает точку наблюдения на 45'. ющий вектор камеры Рис. 3.12. Использование функции д<цьооМА1() 118 Глава 3 ° Визуализация Вызов, дающий такой резуль~ат, выглядит следующим образом: 81иьООКАт(4.8.

2.0, 1.8, 2.0. 4.0, -3.8, 2.8, 2.8, -1.8); Функция 810Еоохдт () является частью библиотеки С)Л), а не основной библиотеки ОрепС1. Это сделано не потому, что функция — не нужная, а потому, что она комбинированная — включает в себя несколько базовых функций ОрепС(., в частности 81тгапз1ате*О и 81йотате*О. Пусть камера находится в произвольной точке обзора и ориентирована согласно линии взгляда, определенной с помощью функции 81цсоокдт (), а сцена расположена в начале координат.

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

Так как ОрепС1 позволяет делать вращение вокруг любой нз осей, можно крутить камеру как угодно с помощью одного только вызова команды 8180 тате" () . ПРИМЕЧАНИЕ За один раз можно осуществить только одно видовое преобразование. Нельзя объединять результаты двух преобразований, как и камера не устанавливается на двух штативах сразу. Если требуется изменить положение камеры, вызовите предварительно функцию 8юоаб!депбтуО, чтобы предупредить воздействие любых текущих преобразований просмотра. Пособие по проецированию от Нэйта Робинса Если у вас есть набор программ от Нзйта Робинса, запустите пособие по проецированию. В атом пособии показано применение 81цЕооКАт О с различными значениями аргументов.

ПРИМЕЧАНИЕ Для преобразования произвольного вектора таким образом, чтобы он совпадал с другим произвольным вектором (например, с отрицательной осью т), нужно провести несколько математических операций. Ось, вокруг которой производится вращение, иожно получить с помощью векторного произведения двух нормализованных векторов. Для определения угла поворота оба образующих вектора сначала нормализуются. Косинус искомого угла между двумя векторами равен скалярному произведению нормализованных векторов.

Угол вращения вокруг оси, определяемый векторным произведением, всегда принимает значения от 0' до 180'. (О нахождении векторного и скалярного произведений см. приложение Д.) Вычисление угла между двумя нормализованными векторами через арккосинус их скалярного произведения не очень точно, особенно для малых углов, но достаточно для начала работы. Создание собственных функций В некоторых специализированных приложениях может потребоваться определить собственные функции преобразования.

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

Как полагается, у самолета есть крен, наклон самолета к его поперечной оси и линия курса (это углы поворота самолета относительно центра тяжести). Следующая подпрограмма осуществляет необходимые видовые преобразования: чо!б р!1оСЧ!еи(6(бапые р1апех, 6ьбапЫе р1апеу, 6(боиЫе р1апес, 6(бппые гп(1, 6(боиЫе р!ссп, 6(босые Пеаб!пв) ( Хщпгатеб(гп(1, О.О, О.О, 1.8); Всао(атеб(р!Сев, 8.0, 1.О, О.О); д(ао(агеб(ьеаб(па, 1.0, 0,8, 0.0); х1тгапх(асеб(-р1апех, -р1апеу, -р)апет) ) Предположим, приложение имитирует камеру, вращающуюся по орбите вокруг обьекта, расположенного в начале координат. В этом случае видовое преобразование можно определить в полярной системе координат.

Пусть переменная г(мтансе !ахает радиус орбиты или расстояние от камеры до начала координат. (Изначально камера смещена на агсг(апсе единиц вдоль положительного направления оси г.) Параметр азстигг) описывает угол поворота камеры вокруг объекта в плоскости зу, отмеренный относительно положительной полуоси у. Также существует паракетр е(епайоп, который указывает угол поворота камеры в плоскости уг, относительно положительного направления оси к Наконец, параметр гср)з( обозначает арашение объема видимости вокруг линии взгляда. Следующая подпрограмма производит предложенные преобразования: чоы рп1агЧ!еи(6(бопЫе б!з(апсе, 6(бобЫе Свист, 6(бопЫе е(еча(зоп, 6ыббЫе ас!ипСП) ( 81тгапз1а(еб(8.8, 0.0, -б!х(апсе); х(апсасеб(-сихзс, 8,0, О.о, 1.0); а(ао(агеб(-е1ечаС!оп, 1.0, 0.8, 8.0); 81ао(аСеб(ас!поСП, 8.0, 0.0, 1.0); Преобразования проецирования В предыдуШих разделах рассматривалось, как получить желаемую модельно-видовую матрипу для проведения правильных модельных и видовых преобразоваавй.

Данный раздел объясняет, как определить желаемую матрицу проекций, которая также изменяет вершины объектов сцены. Перед использованием любых преобразований, описанных здесь, не забудьте выполнить команды: 11яа(ю х небе (6С ряо! 8СТ(оя); 11(паб1бепС! Су(); 120 Глава 3 ° Визуализация Они применяют все преобразования к матрице проекций и позволяют не затрагивать модельно-видовую матрицу, соответственно, удается избежать смешивания преобразований, которое может появиться потому, что каждая команда преобразования проекций отвечает за отде,тьное преобразование. Цель преобразования проецирования — определить объем видимости, используемый в лвух случаях.

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

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

Четыре грани пирамиды, ее вершина и основание определяются шестью плоскостями отсечения объема вссдссмости, как показано на рис. 3.13. Объекты или пх части, находящиеся вне этих плоскостей, отсекаются в окончательном изображении. Функция к)ггвзгвпо не требует, чтобы видимый объем был симметричным. тосд я)Р гозсвпс(СИопЫе (е(г, Сссс)опЫе пцйг, Сс.с)оцЫе Ьопот, СИопЫе гор, С) сссгпЫе пеаг, С1 сйшЫе/аг); Создае~ матрицу для усеченной пирамиды и умножает на нее текущую матрицу. Обьем видимости в виде усеченной пирамиды определяется аргументами в следуюшем порядке: (1е/г, Ьоггот, -пеаг) и (пй)сг, гор -пваг) задают координаты (х; у, г) левос.о нижнего и правого верхнего углов ближней плоскости отсечения соответственно; а пеаг и ~аг уточняют расстояние от точки обзора до ближней и дальней плоскостей отсечения. Они должны быть положительными.

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

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

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