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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.07.2012
Размер файла 447,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Оглавление

Введение

1. Общие сведения о OpenGL

2. Разработка логотипа

3. Разработка программы. Функции, использованные в программе

3.1 Построение модели

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

3.3 Задание освещения

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

Заключение

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

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

Введение

Компьютерная или машинная графика -- это вполне самостоятельная область человеческой деятельности со своими проблемами и спецификой. Компьютерная графика -- это и новые эффективные технические средства для проектировщиков, конструкторов и исследователей, и программные системы и машинные языки, и новые научные, учебные дисциплины, родившиеся на базе синтеза таких наук как аналитическая, прикладная, начертательная геометрия, программирование для ЭВМ, методы вычислительной математики и т. п.[1]

Актуальность работы: основными задачами машинной графики являются ввод (считывание) графической информации в ЭВМ, вывод ее из ЭВМ (формирование изображений), а также определенного рода переработка информации в компьютере. Таким образом, основные задачи машинной геометрии или, как говорят, автоматизированного геометрического моделирования и конструирования -- синтез в ЭВМ и анализ геометрических объектов, решение задач геометрического характера.

При обработке информации, связанной с изображением, выделяют три основных направления:

1.Распознавание образов;

2.Обработка изображений;

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

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

Обработка изображений рассматривает задачи, в которых и входные, и выходные данные являются изображениями. Примерами обработки изображений могут служить:

1.Передача изображений вместе с удалением шумов и сжатием данных;

2.Переход от одного вида изображений к другому;

3.Контрастирование различных снимков.

Компьютерная или машинная графика применяется, когда исходной является информация не изобразительной природы, например, визуализация экспериментальных данных в виде графиков или гистограмм, вывод графики в компьютерных играх или синтез сцен для тренажеров. Можно сказать, что компьютерная графика рисует, опираясь на формульные представления, и имеет набор средств.[2]

Цель работы:

Средствами библиотеки OpenGL создать трехмерное изображение символики факультета.

Основные задачи:

Основными задачами являются:

- изучить принципы работы библиотеки OpenGL;

- научиться создавать приложения с применением трехмерной графики;

- создать трехмерное изображение символики факультета.

1. Общие сведения о OpenGL

Библиотека OpenGL представляет из себя интерфейс программирования трехмерной графики. Единицей информации является вершина, из них состоят более сложные объекты.

OpenGL непосредственно не поддерживает работу с устройствами ввода, такими как мышь или клавиатура, так как эта библиотека является платформенно-независимой. Чтобы задействовать функции конкретной операционной системы, необходимо воспользоваться надстройками над OpenGL, такими как библиотеки GLUT или GLAUX.

На данный момент реализация OpenGL включает в себя следующие библиотеки: OpenGL, GLU, GLUT, GLAUX. Библиотеки GLAUX и GLUT используются для создания так называемых консольных приложений. [3]

2. Разработка логотипа

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

Рисунок 1 - Логотип факультета информационных технологий

В основе разработанной мною символики факультета лежат понятные всем сокращения: ТГТУ (Тамбовский государственный технический университет) и ФИТ (Факультет "Информационных Технологий").

Логотип исполнен в виде ключа. По моему мнению, наш факультет является ключевым (т.е главным) во всем университете. КЛЮЧ -- символ обладания чем-либо[10]. Я думаю, что в данном случае логотип определяет обладание знаниями, своеобразный «ключ к знаниям». Ведь развитие компьютерных технологий позволило обществу подойти к глобальной проблеме информатизации, связанной с быстро возрастающими интеграционными процессами, проникающими во все сферы нашей деятельности: науку, культуру, образование, производство, управление и т. д.

opengl логотип программа освещение

3. Разработка программы. Функции, использованные в программе

3.1 Построение модели

Геометрические объекты в OpenGL задаются вершинами. Вершина - это точка в пространстве графической сцены. Для ее определения в библиотеке OpenGL реализована специальная команда:

void glVertex [2 3 4][s i f d][v](type coord) [7]

Вызов любой команды glVertex* всегда определяется четырьмя однородными координатами: x, y, z и w. Если вызывается команда glVertex3*, то вершина задается x, y и z координатами, при этом w полагается равной 1. Для двумерного случая z - 0, а w - 1.Вершины в OpenGL объединяются в графические примитивы. Это может быть фигура, такая как точка, линия, многоугольник, прямоугольник пикселей или битовый массив. Каждая вершина примитива имеет ассоциированные с ней данные. Каждая стена дома состоит из шести прямоугольников. Для того чтобы сохранить содержимое текущей матрицы для дальнейшего использования, применяются команды glPushMatrix (); glPopMatrix ();

Пример:

PushMatrix ();

glBegin(GL_QUADS);

glVertex3d(3.0, 3.0, 1.0);

glVertex3d(3.0, 3.0, -1.0);

glVertex3d(-3.0, 3.0, -1.0);

glVertex3d(-3.0, 3.0, 1.0);

glEnd();

glPopMatrix ();

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

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

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

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

glTranslatef(xPos, yPos, zPos); // производит перенос объекта, прибавляя к координатам его вершин значения своих параметров.

glRotatef(xRot, 0.0f, 0.0f, 1.0f); // объект будет вращаться относительно оси Oz на угол xRot.

glRotatef(yRot, 1.0f, 0.0f, 0.0f); // объект будет вращаться относительно оси Ox на угол yRot

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

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

glPushMatrix();

glRotated(2*time, 1,0,0);

glTranslated(-0.3,0,0);

glColor3d(1,1,1);

glPushMatrix();

glRotated(120,0,1,0);

glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);

glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);

gluQuadricDrawStyle(quadObj, GLU_FILL);

gluDisk(quadObj, 0.6, 3.5, 30,20);

glPopMatrix();

glPopMatrix(); [6]

3.3 Задание освещения

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

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

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

GLfloat fAmbLight[] = { 0.2f, 0.2f, 0.2f };

GLfloat fDiffLight[] = { 0.2f, 0.2f, 0.2f };

GLfloat fspec[] = { 0.5f, 0.5f, 0.5f };

glLightfv(GL_LIGHT0, GL_AMBIENT, fAmbLight);

glLightfv(GL_LIGHT0, GL_DIFFUSE, fDiffLight);

glLightfv(GL_LIGHT0, GL_SPECULAR, fspec);

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

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

GLfloat fspec[] = { 0.5f, 0.5f, 0.5f };

GlMaterialfv (GL_FRONT_AND_BACK,GL_SPECULAR, fspec);

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

glMaterialf (GL_FRONT,GL_SHININESS, 128);

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

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

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

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

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

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

Заключение

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

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

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

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

1. Сайт http://ru.wikipedia.org/wiki/Компьютерная_графика

2. Сайт http://dic.academic.ru/dic.nsf/enc_culture/1025/Компьютерная.

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

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

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

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

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

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

9. Сайт http://nehe.gamedev.net/

10.Сайт http://slovari.yandex.ru/~книги/Символы,%20знаки,%20эмблемы/Ключ/

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

#include <windows.h>

#include <GL/gl.h>

#include <GL/glu.h>

#include <GL/glaux.h>

#pragma comment (lib, "glaux.lib") ;

unsigned int photo_tex;

AUX_RGBImageRec* photo_image;

unsigned int space_tex;

AUX_RGBImageRec* space_image;

void CALLBACK resize(int width,int height) [9]

{

glViewport(0,0,width,height);

glMatrixMode( GL_PROJECTION );

glLoadIdentity();

glFrustum(-5,5, -5,5, 2,12);

gluLookAt( 0,0,5, 0,0,0, 0,1,0 );

glMatrixMode( GL_MODELVIEW );

}

void CALLBACK display(void)

{

static double xRotate=0, yRotate=0, zRotate=0, radius=0;

static double dr = 0.01;

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glEnable(GL_TEXTURE_2D);

glColor3d(1,1,1);

glBindTexture(GL_TEXTURE_2D, space_tex );

glBegin(GL_QUADS);

glTexCoord2d(0,0); glVertex3d(-5,-5, 3); glTexCoord2d(0,1); glVertex3d(-5, 5, 3);

glTexCoord2d(1,1); glVertex3d( 5, 5, 3);

glTexCoord2d(1,0); glVertex3d( 5,-5, 3);

glEnd();

glPushMatrix();

glTranslated(0.1,0, radius);

glTranslated(0,0.1, radius);

glTranslated(8,5,0);

auxWireCylinder(0.5,1);

glRotated(xRotate, 0, 0, 10 );

glRotated(yRotate, 0, 2, 0 );

glRotated(zRotate, 1, 0, 0 );

glBindTexture(GL_TEXTURE_2D, photo_tex);

glBegin(GL_QUADS);

glTexCoord2d(0,0); glVertex2d(-8,-8);

glTexCoord2d(0,1); glVertex2d(-8, 8);

glTexCoord2d(1,1); glVertex2d( 8, 8);

glTexCoord2d(1,0); glVertex2d( 8,-8);

glEnd();

xRotate += 0;

yRotate += 0;

zRotate += 0;

radius -= dr;

if(radius<-3 || radius>0)

{

dr = -dr;

radius -= 2*dr;

}

glPopMatrix();

glDisable(GL_TEXTURE_2D);

auxSwapBuffers();

}

void main()

{

auxInitPosition( 50, 10, 400, 400);

auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );

auxInitWindow(TEXT("Курсовая работа") );

auxIdleFunc(display);

auxReshapeFunc(resize);

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

photo_image = auxDIBImageLoadW(L"photo1.bmp");

space_image = auxDIBImageLoadW(L"space1.bmp");

glGenTextures(1, &photo_tex);

glGenTextures(1, &space_tex);

glBindTexture(GL_TEXTURE_2D, photo_tex );

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexImage2D(GL_TEXTURE_2D, 0, 3,

photo_image->sizeX,

photo_image->sizeY,

0, GL_RGB, GL_UNSIGNED_BYTE,

photo_image->data);

glBindTexture(GL_TEXTURE_2D, space_tex );

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexImage2D(GL_TEXTURE_2D, 0, 3,

space_image->sizeX,

space_image->sizeY,

0, GL_RGB, GL_UNSIGNED_BYTE,

space_image->data);

auxMainLoop(display);

}

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [1,6 M], добавлен 04.06.2013

  • Разработка факультативного курса по редактированию графических объектов в программе GIMP. Основные понятия растровой графики, интерфейс программы, окна, диалоги и панели. Добавление отсутствующих элементов, Создание из фотографии "карандашного рисунка".

    дипломная работа [5,5 M], добавлен 17.12.2012

  • Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трехмерной сцены и интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.

    курсовая работа [1,1 M], добавлен 23.06.2011

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

    курсовая работа [986,9 K], добавлен 21.03.2011

  • Программный код OpenGL. Синтаксис команд OpenGL. OpenGL как конечный автомат. Конвейер визуализации OpenGL. Библиотеки, относящиеся к OpenGL. Библиотека OpenGL. Подключаемые файлы. GLUT, инструментарий утилит библиотеки OpenGL.

    курсовая работа [304,9 K], добавлен 01.06.2004

  • Назначение и стандарты реализации OpenGL для Windows, порядок подключения графической библиотеки. Основные функции и синтаксис команд. Рисование примитивов, видовые и аффинные преобразования. Моделирование двумерных графических объектов и анимации.

    лабораторная работа [35,0 K], добавлен 04.07.2009

  • Значение вербальных и знаковых информационных моделей для исследования объектов, процессов, явлений. Роль метода формализации в процессе создания компьютерной модели. Использование программы AutoCAD для трехмерного моделирования и визуализации объекта.

    курсовая работа [866,5 K], добавлен 08.01.2015

  • Компьютерная графика как одно из популярных направлений использования компьютера, ее виды и особенности применения. Порядок и способы создания цифровых изображений, средства и обработка. Программы САПР и их использование в инженерной деятельности.

    реферат [19,1 K], добавлен 14.09.2009

  • Этапы построения математической модели статического объекта, использование полиномов Чебышева. Характеристика и основное предназначение программы Matlab. Анализ функциональной модели Брюле, Джонсоном и Клетским. Методы исследования динамических объектов.

    курсовая работа [1,3 M], добавлен 21.05.2012

  • Понятие машинного и реального времени, дискретизация времени. Реализация временных задержек в программе. Вычисление значения многочлена методом Горнера. Разработка схем алгоритмов, основной программы и подпрограмм. Построение графика временной функции.

    курсовая работа [40,7 K], добавлен 18.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.