Машинная и компьютерная графика

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

? данные. Каждая стена дома состоит из шести прямоугольников. Для того чтобы сохранить содержимое текущей матрицы для дальнейшего использования, применяются команды glPushMatrix (); glPopMatrix ();

 

Пример:();(GL_QUADS);d(3.0, 3.0, 1.0);d(3.0, 3.0, -1.0);d(-3.0, 3.0, -1.0);d(-3.0, 3.0, 1.0);();

glPopMatrix ();

3.2 Возможность перемещения

 

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

 

(x, y, z, 1)T = M * (x, y, z, 1)T

 

где M - матрица модельно-видового преобразования. Перспективное преобразование и проектирование производится аналогично. Сама матрица может быть создана с помощью следующих команд:

(xPos, yPos, zPos); // производит перенос объекта, прибавляя к координатам его вершин значения своих параметров.(xRot, 0.0f, 0.0f, 1.0f); // объект будет вращаться относительно оси Oz на угол xRot.(yRot, 1.0f, 0.0f, 0.0f); // объект будет вращаться относительно оси Ox на угол yRot

 

Все эти преобразования изменяют текущую матрицу, а поэтому применяются к примитивам, которые определяются позже. В случае, если надо, например, повернуть один объект сцены, а другой оставить неподвижным, удобно сначала сохранить текущую видовую матрицу в стеке командой glPushMatrix(), затем вызвать glRotate() с нужными параметрами, описать примитивы, из которых состоит этот объект, а затем восстановить текущую матрицу командой glPopMatrix()[4].

Пример, использования этих функций в программе:

glPushMatrix();(2*time, 1,0,0);(-0.3,0,0);d(1,1,1);();(120,0,1,0);(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);(quadObj, GLU_FILL);(quadObj, 0.6, 3.5, 30,20);

glPopMatrix();(); [6]

 

.3 Задание освещения

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

Для использования освещения сначала надо установить соответствующий режим вызовом команды glEnable(GL_LIGHTNING), а затем включить нужный источник командой glEnable(GL_LIGHT0)[5].

Для задания освещения в данной программе были объявлены следующие переменные и использованы следующие команды:

 

GLfloat fAmbLight[] = { 0.2f, 0.2f, 0.2f };fDiffLight[] = { 0.2f, 0.2f, 0.2f };fspec[] = { 0.5f, 0.5f, 0.5f };(GL_LIGHT0, GL_AMBIENT, fAmbLight);(GL_LIGHT0, GL_DIFFUSE, fDiffLight);(GL_LIGHT0, GL_SPECULAR, fspec);

 

Параметр fAmbLight определяет рассеянный цвет материала (цвет материала в тени).

Параметр fDiffLight определяет цвет диффузного отражения материала.

GLfloat fspec[] = { 0.5f, 0.5f, 0.5f };(GL_FRONT_AND_BACK,GL_SPECULAR, fspec);

Параметр fspec определяет интенсивность (цвет) зеркального отражения от данного источника света.[8]

glMaterialf (GL_FRONT,GL_SHININESS, 128);

Параметр mat_shininess определяет степень зеркального отражения.

 

4. Результат выполнения работы

 

Рисунок 2 - Трёхмерное изображение содержащее символику факультета

 

На данном рисунке представлено движение эмблемы факультета информационных технологий. Она сначала приближается к нам, а потом удаляется.

 

Рисунок 3 - Трёхмерное изображение содержащее символику факультета

На данном рисунке представлено движение эмблемы факультета информационных технологий. Она сначала приближается к нам, а потом удаляется.

 

Заключение

 

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

Так как главной целью была разработка трехмерной символики факультета с помощью средств OpenGL, то были представлены общие сведения о этой библиотеке.

Я считаю, что поставленные мною цели и основные задачи были выполнены. В результате на выходе получилась программа, листинг которой представлен в приложении.

 

Список используемых источников

 

1. Сайт

. Сайт

. Р.Д. Верма. Введение в OpenGL. - М.: Горячая Линия - Телеком, 2004. - 304 с.

4. Эдвард Энджел. Интерактивная компьютерная графика. Вводный курс на базе OpenGL. - М.: Вильямс, 2001. - 592 с.

. Френсис Хилл. OpenGL. Программирование компьютерной графики. - СПб.: Питер, 2002. - 1088 с.

6. Мейсон Ву, Джеки Нейдер, Том Девис, Дейв Шрайнер OpenGL. Официальное руководство программиста. - М.: ДиаСофтЮП, 2002. - 592 c.

7...OpenGL..-.:-,1998.-304."> 7. Ю. Тихомиров. OpenGL. Программирование трехмерной графики. - СПб.: БХВ-Петербург, 1998. - 304 с.

. Ричард С. Райт, мл., Бенджамин Липчак. OpenGL. Суперкнига. - М.: Вильямс, 2006. - 1040 с.

. Сайт

.Сайт

 

Приложение. Листинг программы

 

#include

#include

#include

#include

#pragma comment (lib, "glaux.lib") ;int photo_tex;_RGBImageRec* photo_image;int space_tex;_RGBImageRec* space_image;CALLBACK resize(int width,int height) [9]

{(0,0,width,height);( GL_PROJECTION );();(-5,5, -5,5, 2,12);( 0,0,5, 0,0,0, 0,1,0 );( GL_MODELVIEW );

}CALLBACK display(void)

{double xRotate=0, yRotate=0, zRotate=0, radius=0;double dr = 0.01;( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );(GL_TEXTURE_2D);d(1,1,