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

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

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

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

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

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

Однако не обязательно определять какие-либо молельно-видовые преобразования, если достаточно действий по умолчанию. Когда 110 Глава 3 ° Визуализация преобразования вида пе определены, «камера» находится в начале координат, «смотрит» вдоль оси г в минус бесконечность. Если не заданы явно модельные преобразования, модель не перемещается и сохраняет свои положение, ориентацию и размер. Так как команды модельных преобразований могут использоваться вместо видовых преобразований, они пригшмаются е рассмотрение первыми несмотря на то, что команды видовых преобразований в действительности выдаются раньше.

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

Модельные преобразования В Орепо(. определены три команды модельных преобразований; я1Тгап з1аге* (), я1яотаге* () и 515са1е" (), Эти три функции трансформируют объект (или систему координат, если думать об изменении системы координат, а не объекта) посредством сдвига, врашения и масштабирования. Результат эквивалентен мультиплицированию матриц преобразования, вращения или масштабирования с последуюшим вызовом команды я1И>11Иагг1х»О, принимаюшей полученную матрицу в качестве аргумента.

Однако означенные команды дают результат быстрее, чем к1Ии11Иат г)х* О. Ореп('ь автоматически вычисляет нужные матрицы за вас. (См. приложение Е для получения более подробной информации.) Каждое умножение матриц можно описать в терлшнах операций над вершинами геометрического объекта в фиксированной системе координат или в терминах операций над локальной системой координат, связанной с объектом. Перемещение гоЯ я1Тгапз1ате(Я)(ТУРЕ х, ТУРЕ у, ТУРЕ г)' Перемножает текущую матрицу и матрицу, которая перемешает объект с помощью значений х, у и г (или сдвигает локальную систему координат на те же значения). Рисунок 3.5 показывает результат использования команды я1Тгапз1ате«О.

Вращение чоЯ к1когате(Я)(ТУРЕ апц1е, ТУРЕ х, ТУРЕ у, ТУРЕ г); Перемножает текущую матрицу и матрицу, врашаюшую объект (или локальную систему координат) против часовой стрелки вокруг луча из начала координат в точку (х, у, г). Аргумент апфе определяет угол поворота (в градусах). Результат работы функции В1 Рога те г (45, О; О, О; 6, О: 1, 9), поворачиваюшей объект вокруг оси г на 45', показан на рис.

3.6. Модельно-видовые преобразования 111 Рис. 3.5. Перемещение объекта Рис. З.б. Вращение объекта Поинттте, что объект, располагающийся дальше от оси вращения, будет повернут больше (имеет большую орбиту вратцения), чем объект, находящийся недалеко от оси вращения. Если значение аргумента аль)е равно нулю, команда а1иотате*() ничего не делает. МОСШтабИРОВаНИЕ еоЫ В15са1е(Ы)(ТУРЕх, ТУРЕу, ТУРЕг); Умножает текутцую матрицу на матрицу, определяющую растяжение, сжатие пли зеркальное отражение объекта относительно осей. Каждая координата х, у и г каждой точки обьекта умножается на соответствующее значение х, у или г.

Если рассматривать операцию с точки зрения локальной системы координат, на те же значения растягиваются, сжимаются нли отражаются оси локальной системы координат, и, соответственно, трансформирустся связанный с ними объект. Рисунок З.7 демонстрирует результат выполнения команды 515са1ет(г.в: -0,5: 1,Е) . Функция а15са1е* () выполняет три преобразования, изменяющих размеры видимого объекта: масштабирование со значением больше 1.0 растягивает объект, а значение меньше 1.0 уменьшает его. Значение — 1.0 приводит к зеркальному отражению объекта отностительно оси. Прибегать к функции к15са!е*() рекомендуется только в случаях, когда это действительно ттеобходилто, так как она увеличивает затраты на обсчет освещения, ренормализуя векторы нормалей после преобразования. 112 Глава 3 ш Визуализация Рис.

3.7. Масштабирование и отражение объекта Пример кода модельного преобразования В листинге 3.2 приведена часть программы, рисующей четыре раза треугольник, как показано на рис. З.Я. Осуществляются четыре преобразования треугольников: ° рисуется каркасный треугольник без преобразований; ° рисуется такой же треугольник, но линии каркаса штриховые и треугольник смен(ен (влево — в отрицательную сторону по оси х); ° треугольник рисуется штриховой линией с длинными штрихами, его высота (по оси у) убавлена на 50%, а ширина (по оси х) увеличена на 50%; ° рисуется повернутый треугольник с пунктирными границами.

модельного преобразования: гпобе(.с Листинг 3.2. Использование 811оап!пепт(Су(); 8(со)от)т(1.0, 1.0, 1.0>; Оган Сг(ап81е(): сплошная линия */ 81Епаьсе(ОС С1НЕ 5Т!РРСЕ); 81С(пе51(рр1е(1. ОхгвЕО); 81Соае1еепС(Су(); 81тгапэ1атет(-28.8, 0.0, 0 Оган Сг(ап81е(); /* штриховая линия '/ 0) 8!С(пе511рр1е(1, ОхгвОР); 81Соап1пепт(ту(); 815са1е1(1. 5, О. 5, 1. 8),' Оган Сг(ап81е(); /' длинные штрихи */ 811(пе51(рр1е(1, Ох8888): /* пунктирная линия "/ ПРИМЕЧАНИЕ Коэффициент масштабирования, равный нулю, влечет вырождение всех координат объекта в нуль. Это не очень хорошая идея, поскольку отменить действие операции невозможно.

Говоря математически, матрицы не могут быть инвертированы, а инвертирование матриц требуется для операций освещения (см, главу 5). Иногда свертывание координат имеет смысл. Одним из таких случаев является вычисление тени на плоской поверхности (см. раздел «Тени» главы 14). Вообще говоря, если система координат коллапсирует в нуль, матрица проекций должна использоваться раньше, чем модельно-видовая натрица. Модельно-видовые преобразования 113 Х)(азб)бент~ ту(); к)еотатет(эо,е, О.О, О,О, ).В); бган тг(апв1е[); З)Р(зза)е(6( Ь1НЕ 5Т1РРСЕ); Рмс. 3.8. Пример модельного преобразования ПРИМЕЧАНИЕ Иногда, когда программисты хотят заставить объект вращаться непрерывно, они пытаются зто сделать путем повторных использований матрицы поворота с небольшим шагом.

Проблема этого способа в том, что из-за округления результат тысяч небольших вращений постепенно удаляется от теоретического (вплоть до остановки вращения). Правильнее на каждом шаге увеличивать угол наклона и применять преобразование с этим значением. Помните, что использование функции 81Еоаб!()епС) )бу() предотвращает накопительный аффект от последуюп(их трансформаций. Многократное ее примене- 114 глава 3 ° визуализация ние может сказаться как положительно, так и отрицательно, например, если нужно накапливать результаты преобразований вида или модели. (См.

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

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

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

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

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

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