405

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

Курсовая

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

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

Русский

2013-01-06

79 KB

17 чел.

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

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

Кафедра ЭВМ

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

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

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

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

    Ярош Е.С.      

  «     »                   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.


 

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

24973. Опытное обоснование основных положений МКТ строения вещества. Масса и размер молекул. Постоянная Авогадро 27.5 KB
  Микрохарактеристики вещества. Молекулярнокинетическая теория это раздел физики изучающий свойства различных состояний вещества основывающийся на представлениях о существовании молекул и атомов как мельчайших частиц вещества. Все вещества состоят из мельчайших частиц: молекул атомов или ионов.
24974. Идеальный газ. Основное уравнение МКТ идеального газа. Температура и ее измерение. Абсолютная температура 26.5 KB
  Основное уравнение МКТ идеального газа. Понятие идеального газа свойства. Объяснение давления газа. Для объяснения свойств вещества в газообразном состоянии используется модель идеального газа.
24975. Уравнение состояния идеального газа. (Уравнение Менделеева—Клапейрона.) Изопропессы 41.5 KB
  Процессы в газах. Эти величины называют параметрами состояния газа. Для произвольной массы газа единичное состояние газа описывается уравнением Менделеева Клапейрона: pV = mRT M где р давление V объем т масса М молярная масса R универсальная газовая постоянная.
24976. Испарение и конденсация. Насыщенные и ненасыщенные пары. Влажность воздуха. Измерение влажности воздуха 23.5 KB
  Поэтому атмосферное давление представляет собой сумму давления сухого воздуха и находящегося в нем водяного пара. Давление водяного пара будет максимальным при насыщении воздуха паром. Так давление насыщенного пара не зависит от объема но зависит от температуры. Эта зависимость не может быть выражена простой формулой поэтому на основе экспериментального изучения зависимости давления насыщенного пара от температуры составлены таблицы по которым можно определить его давление при различных температурах.
24977. Кристаллические и аморфные тела. Упругие и пластические деформации твердых тел 24 KB
  Твердые тела. Кристаллические тела. Аморфные тела.
24978. Работа в термодинамике. Внутренняя энергия. Первый закон термодинамики. Применение первого закона к изопроцессам. Адиабатный процесс 29.5 KB
  Существуют два способа изменения внутренней энергии: теплопередача и совершение механической работы например нагревание при трении или при сжатии охлаждение при расширении. Теплопередача это изменение внутренней энергии без совершения работы: энергия передается от более нагретых тел к менее нагретым. Теплопередача бывает трех видов: теплопроводность непосредственный обмен энергией между хаотически движущимися частицами взаимодействующих тел или частей одного и того же тела; конвекция перенос энергии потоками жидкости или газа и...
24979. Взаимодействие заряженных тел. Закон Кулона. Закон сохранения электрического заряда 31 KB
  Способность электрических зарядов как к взаимному притяжению так и к взаимному отталкиванию объясняется существованием двух видов зарядов. алгебраическая сумма зарядов всех тел остается постоянной: q1 q2 . Появление и исчезновение электрических зарядов на телах в большинстве случаев объясняется переходами элементарных заряженных частиц электронов от одних тел к другим. Законы взаимодействия неподвижных электрических зарядов изучает электростатика.
24980. Работа и мощность в цепи постоянного тока. Электродвижущая сила. Закон Ома для полной цепи 26 KB
  Работа тока. В электрическом поле из формулы определения напряжения U = A q легко получить выражение для расчета работы переноса электрического заряда А = Uq так как для тока заряд q = It то работа тока: А = Ult или А = I2R t = U2 R t. При прохождении тока по проводнику количество теплоты выделившейся в проводнике прямо пропорционально квадрату силы тока сопротивлению проводника и времени прохождения тока.
24981. Магнитное поле, условия его существования. Действие магнитного поля на электрический заряд и опыты, подтверждающие это действие. Магнитная индукция 54 KB
  Магнитное взаимодействие движущихся электрических зарядов согласно представлениям теории близкодействия объясняется следующим образом: всякий движущийся электрический заряд создает в окружающем пространстве магнитное поле. Магнитное поле особый вид материи который возникает в пространстве вокруг любого переменного электрического поля. С современной точки зрения в природе существует совокупность двух полей электрического и магнитного это электромагнитное поле оно представляет собой особый вид материи т.