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

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

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

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

Чтобы выполняться под ЧУ)пбоч/з, программы, объявляющие функции обратного вызова, наподобие (евз.с, требуют указания обозначения САССВАСК прн объявлении функций. Если указать пустое определение С/1ССВАСК (как ниже), зто позволит коду одинаково хорошо запускаться как в М(егози(( уу(пбочкв, так н в ОН(Х: №!Риде( СА««ВАСК №Пет!пе САССВАСК №епд!т чо(и СА(КВАС« са11Ьас«гипс(!оп(...) ( В листинге 11.1 для параметра обратной связи 6«О ТЕ55 уЕПТЕХ просто зарегистрирована команда к1уегтехЗОч(), и передаются только координаты каждой иршины. Если вы хотите задать болыпе информации для вершин, например цвет, пормаль к поверхности или координаты текстуры, вам требуется более сложная процедура обратной связи.

Листинг 11.2 включает в себя начало другого объекта Разбиения, полное описание находится в примере тезз.с. Здесь зарегистрироилная функция чегтехСа11Ьас«() ожидает поступления аргумента, являюще- ксЯ Указателем на шесть значений с плавающей запатой двойной точности: хъ У- и г-координаты и значения красного, зеленого и синего компонент цвета вершины.

Л Регистрация функций обратной связи "/ и(Е САССВАСК чегтехса11Ьас«(6«чо!Ь *чегтех) продолжение р йистииг 11.2. Функции Р Другая часть блока 11иТеззСа11ЬасК(тоЬ), 1(иге»са(1Ьас«(соь), 11итеззса11Ьас«(гоо), )ШТеззСа\1Ьас«(СоЬ), 11иТе55Са11Ьас«(соЬ), Мозаичное представление многоугольников 421 обратной связи для вершин и объединения (согпЬ(пе); гевз.с инициализации !п! 1() */ 6СО ТЕ55 ЧЕКТЕХ, чегсехСа11Ьас«); 6СО ТЕ55 ВЕ61К, Ьеп(пса11Ьас«): 6СО ТЕ55 ЕНО, епдса11Ьас«); 6СО ТЕ55 Еййо«, еггогСа11Ьас«); 6СВ ТЕ55 СОНВ1ИЕ, сошЬ(песа11Ьас«); 422 Глава 11 ° Мозаичное представление и поверхности второго порядка Листинг 11.2 (продолжение) ( сопвС 6)боаЫе 'ро]псег; ро1п(ег = (6(боаЫе *) чегсех; В[Со[огЗбч(ра]псег+3); Х['чегСехЗбч(чеггех); ) чо1б САССВАСК сапы пеСа[\Ьаск(6(боаЫе соогбв[3], 6СбоаЫе "чегСех баСа(4], 6(1[оаС не!вас[4], 6(боаЫе '*баСаоиС ) ( 6ьбааЫе 'чегсех; !пс чегСех = (6(боаЫе *) па[[ос(6 * в!аеас(6(боаЫе)); чегтех[О) = сбегав[0]; чегсех[1) = саогба[1]; чегсех[2) = соогба[2]; тог (1 = 3; ! < 6; 1++) чегсех(1] = ив[ВЫ (8] ' чег(ех ба(а[0][1! + ие]вас[1] * чегсех баса[1][!] + ие! аЫ (2] * чегсех баСа[2] [1] + ие!ВЫ [3] ' чеггех бага[3][!]: 'баеаоаС = чегеех; ) Листинг 11.2 также демонстрирует использование функции обратной связи 6И ТЕ55 СОМВ[МЕ.

К этой функции происходит обращение всякий раз, когда алгоритм тесселяции, анализируя входные контуры, обнаруживает пересечение я принимает решение о создании вершины. Она же вызывается, когда тесселятор решает объединить две вершины с практически одинаковыми координатами. В листинге 11. 2 новая вершина является линейной комбинацией четырех существующих — оегсех Нага[0..3]. Коэффициенты комбинирования находятся в массиве весов сбе[й)сг~0..3$ сумма этих весов равна 1.0. В массив соагс[в помещаются координаты новой вершины.

Зарегистрированные процедуры обратной связи должны выделить память для другой вершины, выполнить взвешенную интерполяцию данных на основе данных пеггех !соса и ше!я)сг и вернуть указатель на новую вершину в переменной сса(а(лас Функция соа~нпеСа[[ЬасК() из листинга 112 интерполирует ВСВ значения цвета. В начало массива из шести элементов помещаются хп у- и г-координаты, а взвешенные средние КСВ-компонентов заносятся в последние три элемента.

Данные, определяемые пользователем Зарегистрированы могут быть функции обратной связи шести различных типов. Поскольку для каждой функции имеется две версии, всего получается 12 вызовов. Для первой версии данные определяются пользователем. Эти данные передаются приложением в функцию В1итевзВеВ]про[уйоп() и далее проходят, ос. таваясь неизменными, каждую процедуру обратной связи "ВАТА. С 610 ТЕ55 Р)озанчное представление многоугольников 423 3161М ВАТА заданные пользователем данные могут быть применены для отдельных многоугольников. Если указаны обе версии процедуры обратной связи, используется вызов изег с?ага, а другой игнорируется. Таким образом, хотя существует 12 вариантов, одновременно активны могут быть не более шести из них. Тпк, в листинге 11.2 используется плавное затенение, и процедура чегсехСа11озсх() зшгает НОВ-цвет для каждой вершины.

Если вам нужно реализовать освещение и плавные переходы при выводе теней, для функции обратной связи следует указывать нормаль к поверхности для каждой вершиггы. Вместе с тем при необходиностн в освещении и «плоском» (однотонном) затенении достаточно указать только одну нормаль на многоугольник, но не для всех вершин. В атом случае вам следует выбрать функцию 610 ТЕ55 ВЕ61М ОАТА и передавать координаты вершины и нормаль к поверхности по указателю иьег с(а(а. Свойства мозаичного разбиения Перед тем как выполнить тесселяцию и воспроизведение, вы можете использопать к1игеззРгорегсу() для установки свойств, имеющих отношение к алгоритку тесселяции. Самое важное и сложное из зтнх свойств — правило «намотки» (гчгпс?гпй гп?е), определяющее, что следует считать находящимся «внутри» многоугольника, а что — «снаружи». чу к1оте з з Р горе гсу(О??)геззе?асог *Мзгоф, С? еппш рпгре»ПА О?х?оное оа?ие); Устанавливает значение (оа?ие) свойства (ргорегпу) для объекта разбиения (ГезгоЬ~).

Свойство указывается константами 610 ТЕ55 ВООМОАРу ОМ(у, 6СО ТЕ55 ТОСЕКАМСЕ или 6(0 ТЕ55 И1М01М6 РОСЕ. Если указано свойство 610 ТЕ55 ВООМОАРУ ОКСУ, его значением может быть 61 ТРОЕ или 61 РА15Е. В первом случае многоугольники не разбиваются на многоугольники с заполнением; рисуются лишь контуры, разграничивающие внутреннюю и внешнюю части многоугольника. Значение по умолчанию— 61 ГА(5Е. (См. к1отеззногша1() для получения более подробной информации.) Если указано свойство 6СО ТЕ55 ТОСЕКАМСЕ, его значением является расстояние между двумя вершинами, удовлетворяющими требованию близости расположения.

Такие вершины могут быть объединены функцией обратной связи 610 ТЕ55 СОМВ1МЕ. Чтобы выяснить максимальное расстояние между вершинами, нужно умножить значение допуска на наибольшую разницу координат для поступивших на обработку вершин.

Возможность объединения вершин поддержана не во всех реализациях, позтому значение допуска следует расценивать как рекомендованное. Допуск по умолчанию равен нулю. Свойство 610 ТЕ55 И1М01М6 КОСЕ определяет, какая часть многоугольника является «внутренней», а какая — «наружной» и, соответственно, не подлежащей заполнению, Аргумент оа?ие здесь может быть одним из следующих значений: 6СО ТЕ55 И1М01М6 000 (по умолчанию), 6СО ТЕ55 И1М01М6 МОМЕЕКО, 600 ТЕ55 И1М01М6 РО51Т?УЕ, 6СО ТЕ55 И1М01М6 МЕОАТХУЕ или 610 ТЕ55 И1МОХМ6 АВ5 6ЕО ТИО.

424 Глава 11 ° Мозаичное представление и поверхности второго порядка Число «витков» и правило «намотки» Для одиночного контура число «витков» (т»1пс11пд пц1пЬег) точки — это знаковое число оборотов вокруг нее при однократном обходе контура (обходу против часовой стрелки соответствуют положительные значения, по часовой стрелке — отрицательные).

В случае нескольких контуров отдельные числа витков складываются. Эта процедура связывает целое знаковое число с каждой точкой плоскости. Заметьте, что число витков одно и то же для всех точек отдельно взятой области. На рис. 11.2 показаны три набора контуров и их числа витков для точек внутри этих контуров. В левом наборе контуры обхолятся против часовой стрелки, соответственно, каждая вложенная область добавляет елиницу к числу витков. На среднем рисунке два внутренних контура обходятся по часовой стрелке, и их число витков декрементируется и становится отрицательным.

Рис. 11.2. Примеры контуров дпя демонстрации понятия числа витков Правило намотки классифицирует область как внутреннюю, если число витков соответствует категории: четное, не нуль, положительное, отрицательное или «абсолютное значение, большее или равное 2». Обычно четные и ненулевые числа свидетельствуют о «внутреннем» характере области. Остальные варианты имеют ограниченное применение для СЯО- (сопзггпс11»е зо11о яеотеггу — конструктивная блочная геометрия) операций над многоугольниками. Программа-пример севзн1пп. с из состава установочного пакета Орепб1. демонстрирует использование правила намотки. На рис.

11.3 отображены четыре набора контуров. Темные участки на рисунке представляют внутренние области. Обратите внимание на то, как влияет на интерпретацию контура направление его обхода. Правила намотки в конструктивной блочной геометрии Больше других бывают востребованы параметры 6И ТЕ55 И1й01й6 000 и 6ЕО ТЕ55 И1й01й6 йОй1ЕйО. Они находят применение в наиболее типичных случаях затенения. Правила намотки также применяются в конструктивной блочной геометрии (СБО), где онн облегчают поиск объединений, разностей или пересечений (булевы операции) нескольких контуров. Мозаичное представление многоугольников 425 Рис. 11.3. Как правила намотки определяют внутренние области Для начала сделаем допущение, что для каждого контура число витков равно О для любой внутренней области и равно 1 для всех внешних областей.

(Контур пе должен быть самопересекаюшимся.) Согласно этой схеме контуры «против часовой стрелки» соответствуют внешним границам многоугольника, а контуры «по часовой стрелке» вЂ” дырам. Контуры могут быть вложенными, причем вложенный контур должен быть ориентирован противоположно наружному. 42В Глава 11 ° Мозаичное представление и поверхности второго порядка Если оригинальные многоугольники не удовлетворяют этим допущениям, они могут быть предварительно преобразованы к этой форме посредством тесселяции со включенным свойством бьц ТЕ55 ВООМОАМУ ОМЕР.

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

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

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