Министерство образования и науки Российской Федерации
ФГАОУ ВПО «Уральский федеральный университет
им. первого Президента России Б.Н.Ельцина»
Теплоэнергетический факультет
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ
Курсовая работа
по дисциплине «Компьютерная графика»
Модель трехмерной сцены и библиотека OpenGL
Студент: Котовский В.В.
Екатеринбург,
2010
Средствами графической библиотеки OpenGL построить динамическую трехмерную сцену, включающую заданные тело и поверхность вида z=f(x,y). Заданные графические объекты должны быть представлены в следующих видах:
· в виде каркасной модели, позволяющей видеть контуры примитивов, из которых составлены объекты;
· в виде реалистических изображений, построенных с учетом параметров источника освещения и параметров отражающих свойств материала;
· в виде объектов с наложенной на них текстурой.
Заданное тело: вентилятор.
Заданная поверхность: ,
где а, b – параметры.
Каркасные модели и поверхности могут быть представлены с помощью примитивов OpenGL, таких как:
× GL_LINES
× GL_LINE_STRIP
× GL_LINE_LOOP
× GL_TRIANGLES
× GL_TRIANGLE_STRIP
× GL_TRIANGLE_FAN
× GL_QUADS
× GL_QUAD_STRIP
× GL_POLYGON
×
Примитивы LINE могут быть использованы только для создание, например, сетки, поскольку нормали к ним не пропишешь и освещение на них не будет правильно отображаться.
Примитивы TRIANGLE и QUAD применимы для создания, пожалуй, всех поверхностей и тел – куб, пирамида, параллелепипед, сфера, цилиндр и т.д. С использованием TRIANGLE поверхности и тела получаются верно сглаженными при меньшем разбиении, нежели с QUAD.
Примитив POLYGON применим для получения круга.
В данной работе используются примитивы: GL_QUADS, GL_LINES, GL_POLYGON для построение каркасной модели тела, а для построения поверхности используется GL_QUADS.
Составные части модели вентилятора
Сетка
Сетка вентилятора составлена из трех основных частей
- Круговая составляющая сетки
| |
где bFan+17 – радиус окружности, rWeb – разбиение окружности |
Фрагмент кода программы круговой составляющей сетки
q=0;
while(q<rWeb)
{
glBegin(GL_LINES);
glVertex3f(0,(bFan+17)*sin(q*2*M_PI/rWeb),(bFan+17)*cos(q*2*M_PI/rWeb));
glVertex3f(0,(bFan+17)*sin((q+1)*2*M_PI/rWeb),(bFan+17)*cos((q+1)*2*M_PI/
rWeb));
glEnd();
q++;
}
- Дуговая составляющая сетки
| |
где bFan+2 – радиус полуокружности, rWeb – разбиение окружности |
Фрагмент кода программы дуговой составляющей сетки
int iWeb=0;
while(iWeb<rWeb)
{
glBegin(GL_LINES);
glVertex3f((bFan+2)*cos(iWeb*M_PI/rWeb),(bFan+2)*sin(iWeb*M_PI/rWeb)+15,0);
glVertex3f((bFan+2)*cos((iWeb+1)*M_PI/rWeb),(bFan+2)*sin((iWeb+1)*M_PI/rWeb)+15,0);
glEnd();
iWeb++;
}
- Косой прут сетки
| |
где a, b – параметры отрезка |
Фрагмент кода программы косого прута сетки
glBegin(GL_LINES);
glVertex3f(bFan+2,15,0);
glVertex3f(bFan,rFan,0);
glEnd();
... . Аналогична поверхность редко бывает окрашена равномерно: чаще на ней бывает какой либо узор. Реалистичность изображения можно повысить путем нанесения узора на поверхность. Само перечисление способов построения реалистичных изображений говорит о том, какой большой объем работы необходимо проделать, чтобы получить что-нибудь, в самом деле, стоящее. И это было бы действительно так если бы не ...
... представляют собой числа с плавающей точкой. Наличие различных форматов позволяет библиотеке OpenGL принимать данные пользователя в его собственном формате данных. Некоторые команды библиотеки OpenGL допускают использование 8 различных типов данных в качестве своих параметров. Буквы, используемые в качестве суффиксов для того, чтобы определить эти типы данных для реализации ISO С библиотеки ...
... , комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (реализовано в .NET Framework 3.0). C# ...
... на другом или утверждения о реализации идеи человеко-машинного общения. Поэтому исследования в этой области являются весьма актуальными. 3. Разработка программного обеспечения для распознавания команд управления промышленным роботом 3.1 Реализация интерфейса записи и воспроизведения звукового сигнала в операционной системе Microsoft Windows 3.1.1 Основные сведения Звуковые данные хранятся ...
0 комментариев