405

Создание программы с цветным движущимся изображением

Курсовая

Информатика, кибернетика и программирование

По заданию требуется разработать программу, реализующую цветное движение: вращение многоугольника (количество углов от 3 до 5 задается пользователем). Алгоритмы работы программ различные, что обусловлено высоким уровнем библиотеки OpenGL и относительно низким уровнем средств DirectX.

Русский

2013-01-06

79 KB

16 чел.

Федеральное агентство по образованию РФ

Южно-Уральский государственный университет

Кафедра ЭВМ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по дисциплине

“Компьютерная графика”

 Руководитель:

    Ярош Е.С.      

  «     »                   2005г.

                                                                             Автор работы:

                                                                                             студент группы ПС-423

                                                                            Бухарин Д.А.                                                   

                                                                                              «    »                       2005г.

                                                                                    Работа защищена

                                                                                         с оценкой

                                                                                        ______________

                                                                                             «    »                      2005г.

Челябинск

2011г.

Задание

ЮУрГУ

Факультет ПС

Кафедра ЭВМ

Задание к курсовой работе

по курсу  “Компьютерная графика”

                           студенту группы ПС-423 Бухарину Д.А.

1. Тема проекта: разработать программу, реализующую цветное движущееся изображение: вращение многоугольника с заданным числом углов.

 

2. Технические требования : Программа должна быть реализована в 2 вариантах:

в среде MS WINDOWS (без использования RAD-средств):

- с подключением средств DirectX;

- с подключением средств OpenGL.

В среде MS WINDOWS приложение должно:

- допускать остановку движения по нажатию любой клавиши или левой кнопки мыши;

- иметь собственную пиктограмму;

- настраиваться на желаемую временную задержку.

3. Содержание пояснительной записки:

   Пояснительная записка должна отражать все этапы работы.

4. Дата выдачи задания:  « 10 »   октября    2005 г.

 

         Руководитель  ____________(Ярош Е.С.)

Студент            ____________(Бухарин Д.А.)


Содержание

1. Анализ задания и выбор алгоритма решения 4

2. Особенности OpenGL реализации программы 5

3. Особенности DirectX реализации программы 5

4. Фрагменты текста программ 6

4.1. OpenGL 6

4.2. DirectX 8

Литература 10


1. Анализ задания и выбор алгоритма решения

   По заданию требуется разработать программу, реализующую цветное движение: вращение многоугольника (количество углов от 3 до 5 задается пользователем).

  Алгоритмы работы программ различные, что обусловлено высоким уровнем библиотеки OpenGL и относительно низким уровнем средств DirectX. В алгоритме программы с использованием средств DirectX изначально происходит инициализация DirectDraw, после чего создаются первичная и вторичная поверхности. Далее изображение из битового образа копируется во вторичную поверхность, после чего происходит смена поверхностей. В алгоритме программы с использованием средств OpenGL, после начальной инициализации, рисуются объекты с помощью стандартных функций OpenGL, после чего преобразуются координаты для реализации анимации.

   В качестве языка программирования выберем C++. Среда программирования Borland C++5.02.

   Оба варианта будут реализованы в одной программе. В начале создается объект класса, который в зависимости от выбранного типа графического движка будет реализовывать либо OpenGL, либо DirectX функции.

   Для смены кадров будет использоваться системный таймер (сообщение API: WM_TIMER).

   По сообщению WM_DESTROY уничтожаются все созданные переменные как для DirectX, так и для OpenGL.
2. Особенности OpenGL реализации программы

 Особенности реализации можно выделить следующие:

  1.  Подключение заголовочного файла GL/glaux.h, в котором описаны функции;
  2.  Инициализация OpenGL;
  3.  Использование ламп;
  4.  Использование наложения цветов;
  5.  Использование прозрачности объектов;
  6.  Работа с координатами (сохранение, восстановление преобразование координат).

Описание алгоритма:

- рисуем многоугольник так, чтобы его центр находился в начале координат;

- анимация реализуется путем поворота осей координат относительно вектора {0,0,1}.

3. Особенности DirectX реализации программы

    Особенностей реализации DirectX было значительно больше, выделю лишь основные:

1) Инициализация  DirectDraw. (Проверка установки на компьютере пользователя используемых в программе интерфейсах DirectDraw, заполнение основных структур);

2) Поскольку стандартных функций для вывода графических примитивов в DirectDraw нет, программа реализована в качестве анимации;

3) Создание вторичной и первичной поверхностей (используем двойную буферизацию);

4) Создание битового образа, и копирование его во вторичную поверхность;

5) Переключение поверхностей – блитинг;

6)Работа с объектами интерфейса DirectDraw: создание, удаление, использование методов.

   Вообще изобразить графические примитивы в DirectDraw можно, например, при помощи GDI. Но это будет медленно, потому что методы DirectDraw позволяют работать напрямую с адаптером. Также алгоритм реализации задания при помощи примитивов был сделан под OpenGL. По всем этим причинам было решено реализовать анимацию под DirectX при помощи блитинга.


4. Фрагменты текста программ

  

Здесь приведем наиболее значительный по части компьютерной графики код.

 4.1. OpenGL

//--Поехали---------------------------------------------------------------------

void polyOGL::Do(HWND hWnd)

{double A=2*0.5*0.5-2*0.5*0.5*cos(3.14*72/180);

static double vect=0;

static int fi=0;

if(Begin)

 {fi=0;

  Begin=0;

 }

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

glPushMatrix();

glRotated(fi,0,0,1);

glColor3f(0,1,0);

if(coner==3)

{

 glBegin(GL_POLYGON);

  glVertex3d(0,0.5,0);

  glVertex3d(-sqrt(0.25-pow(0.25,2)),-0.25,0);

  glVertex3d(sqrt(0.25-pow(0.25,2)),-0.25,0);

 glEnd();

}

if(coner==4)

{

 glBegin(GL_POLYGON);

  glVertex3d(0,0.5,0);

  glVertex3d(-0.5,0,0);

  glVertex3d(0,-0.5,0);

  glVertex3d(0.5,0,0);

 glEnd();

}

if(coner==5)

 {

 double x1,x2,y1,y2;

 y1=A-0.25;

 x1=-sqrt(0.25-pow(y1,2));

 x2=-sqrt(A)/2;

 y2=-sqrt(0.25-pow(x2,2));

 glBegin(GL_POLYGON);

  glVertex3d(0,0.5,0);

  glVertex3d(x1,y1,0);

  glVertex3d(x2,y2,0);

  glVertex3d(-x2,y2,0);

  glVertex3d(-x1,y1,0);

 glEnd();

}

glPopMatrix();

fi+=15;

if(fi==360) fi=0;

SwapBuffers(wglGetCurrentDC());

 return;

}

4.2. DirectX

//--Поехали---------------------------------------------------------------------

void polyDX::Do(HWND hWnd)

{

static int frame=0;

char dir[]={'\0','\0'};

itoa(coner,dir,10);

if(Begin)

 {frame=0;Begin=0;}

char file[10]={""},str[]={".bmp"},str1[3]={'\0','\0','\0'};

itoa(frame+1,str1,10);

strcat(file,dir);

strcat(file,"\\");

strcat(file,str1);

strcat(file,str);

hBmp=(HBITMAP)LoadImage(NULL, file, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

GetObject (hBmp, sizeof(BITMAP), &Bmp);

ddsd.dwSize = sizeof ( ddsd );

ddsd.dwFlags  = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;

ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;

ddsd.dwWidth=Bmp.bmWidth;

ddsd.dwHeight=Bmp.bmHeight;

lpDD->CreateSurface(&ddsd, &lpDDSec, NULL);

HDC HDCImage   = NULL;

HDC HDCSurface = NULL;

HDC ThisDevice = NULL;

HDCImage=CreateCompatibleDC(NULL);

SelectObject(HDCImage, hBmp);

lpDDSec->GetDC(&HDCSurface);

ddsd.dwSize=sizeof(ddsd);

ddsd.dwFlags=DDSD_HEIGHT|DDSD_WIDTH;

lpDDSec->GetSurfaceDesc(&ddsd);

BitBlt(HDCSurface, 0,0,ddsd.dwWidth,ddsd.dwHeight, HDCImage, 0, 0, SRCCOPY);

lpDDSec->ReleaseDC(HDCSurface);

DeleteDC(HDCImage);

//GetClientRect(hWnd,&ClientRect);

BMPRect.top=0;

BMPRect.bottom=Bmp.bmHeight;

BMPRect.left=0;

BMPRect.right=Bmp.bmWidth;

RECT rr;

rr.left=ClientRect.left;rr.top=ClientRect.top;

rr.bottom=BMPRect.bottom+ClientRect.top;rr.right=BMPRect.right+ClientRect.left;

lpDDPrim->Blt(&rr,lpDDSec,&BMPRect,DDBLT_WAIT,NULL);

frame++;

lpDDSec->Release();

lpDDSec=NULL;

 if(frame==10)frame=0;

return;

}


Литература

1. Рихтер Дж. Windows для профессионалов, – М.: Изд-во “Русская Редакция”, 2001.

2. Порев В. Компьютерная графика. Учебное пособие. – СПб.: «БХВ-Петербург», 2002.


 

А также другие работы, которые могут Вас заинтересовать

82491. Основные направления и школы в экономической теории. Экономические законы и категории 34.86 KB
  Экономические законы и категории. Экономические законы и категории. Различают специфические общие и особенные экономические законы. Специфические экономические законы действуют в пределах исторически определенных форм хозяйствования.
82492. Рынок и условия его возникновения: типы рынков, экономические и неэкономические блага, типы хозяйственных систем, виды и формы собственности 36.72 KB
  Рынок это такая экономическая система которая базируется на частной собственности на средства производства и на принципах самостоятельно независимого принятия решений отдельных хозяйствующих субъектов фирмами или частными лицами. экономическая обособленность производителей в форме частной собственности. виды и формы собственности Собственность можно классифицировать различным образом например: 1 По форме присвоения различных форм собственности индивидуальная коллективная и государственная собственность.
82493. Теория собственности: понятие, виды, формы. Права собственности. Приватизация, ее особенности в России 34.53 KB
  Права собственности. Теория собственности: понятие виды формы Собственность это система экономических отношений между людьми выражающаяся во владении пользовании и распоряжении средствами производства и соответствующей им формы присвоения средств и результатов производства. Собственность можно классифицировать различным образом например: 1 По форме присвоения различных форм собственности индивидуальная коллективная и государственная собственность.
82494. Ограниченность ресурсов и кривая производственных возможностей 43.7 KB
  В широком смысле ограничены прежде всего способности человека взять имеющиеся в природе в изобилии свободные материальные ресурсы при том что в перспективном плане строго дефицитными могут быть лишь невоспроизводимые условия время и лучшие естественные ресурсы. Виды экономических ресурсов природные ресурсы земля недра водные лесные и биологические климатические и рекреационные ресурсы сокращенно земля; трудовые ресурсы люди с их способностью производить товары и услуги сокращенно труд; капитал в форме денег и ценных...
82495. Цена, спрос и предложение. Равновесие по Маршаллу и по Вальрасу. Паутинообразная модель 71.61 KB
  Цена́ количество денег в обмен на которые продавец готов передать продать единицу товара. Цена является коэффициентом обмена конкретного товара на деньги. Спрос на какойлибо товар или услугу это желание и возможность потребителя купить определенное количество товара или услуги по определенной цене в определенный период времени. Объем спроса это то количество товара или услуги которое потребители согласны купить по определенной цене в течении определенного периода времени.
82497. Теория потребительского поведения. Кардинализм и ординализм 37.73 KB
  максимизировать совокупную полезность. Потребительский выбор это выбор максимизирующий совокупную полезность в условиях ограниченности ресурсов дохода. Рациональное потребительское потребление предполагает что потребитель максимизирует совокупную полезность в условиях существующего у него бюджетного ограничения. Потребитель находится в состоянии равновесия если он не может увеличить совокупную полезность при данной величине своего дохода и существующих ценах увеличивая или уменьшая покупку одного или другого товара.
82498. Механизм рынка совершенной конкуренции. Равновесие фирмы в краткосрочном периоде 38.41 KB
  Совершенная конкуренция когда на рынке: мнво покупателей и продавцов высокая мобильность факторов производства отсутствие барьеров на пути вступления на рынок или выхода из него доходность продаваемой продукции равный доступ всех участников рыночных отношений к инфи Совершенно конкурентные фирмы не имеют контроля над ценами т. объем их производства по сравнению с размерами рынка ничтожно мал будет ли она производить продукции больше или меньше цены не изменятся. В одной и той же отрасли действуют разные фирмы с разным...
82499. Сравнительная характеристика французской и германской правовых групп 28.69 KB
  Внутри романогерманской правовой семьи группа римского романского права которая наиболее сильно отражена во французском праве отличается от группы германского права. Франция прошла длительную правовую историю и в основе ее современной системы источников права до сих пор лежат кодексы наполеоновской эпохи о которых подробно говорилось выше. Во французской правовой системе в качестве самостоятельного источника права признаются и общие принципы права. Во французской юридической литературе источники права делятся на две основные группы:...