Разработка приложения с использованием OpenGL для динамического изображения трехмерной модели изображения

Автор работы: Пользователь скрыл имя, 11 Января 2015 в 13:17, курсовая работа

Описание работы

Целью данной курсовой работы является создание трехмерной сцены, на которой изображены фигуры (треугольники и квадраты с общей вершиной), вращающиеся вокруг одной точки. Работа должна быть выполнена в среде разработки Lazarus.
В результате выполнения данной курсовой работы изучены правила создания сцен на компьютере и приобретены навыки работы с графической библиотекой.

Содержание работы

Введение ……………………………………………………………………..….….. 5
1 Анализ предметной области …………………………………………………... 6
2 Техническое задание ………….………………………………..………………...7
2.1 Основание для разработки ……................……………………………….7
2.2 Назначение разработки ………………...…………………………………7
2.3 Требования к программе ……………………………………………………7
2.3.1 Требования к функциональным характеристикам ……….……..7
2.3.2 Требования к составу и параметрам технических средств…...... 7
2.3.3 Требования к информационной и программной совместимости… 8
2.4 Требования к программной документации……….………………… ......8
3. Описание программы ……….………………………………………………….9
3.1 Общие сведения ………………..………… ...................................................9
3.2 Функциональное назначение.………………………………………..….... 9
3.3 Описание логической структуры…………………………………..….…. 9
3.4 Используемые технические средства…………………………….….........11
3.5 Вызов и загрузка…………………………………....................................11
4. Описание программы ……….…………………………..………………….…12
4.1 Объект испытаний ……..……………………..……………………...........12
4.2 Цель испытаний.………………………………..........................................12
4.3 Требования к программе…………….…………….……. ........................12
4.4 Требования к программной документации……………..………………..12
4.5 Средства и порядок испытаний……….……….……. …….....................12
5. Описание применения……............................................................................14
5.1 Назначение программы...……………..………………..………………… 14
5.2 Условия применения…………….……………….....................................14
5.3 Описание задачи…….……. ....................................................................14
5.4 Входные и выходные данные………………...........................................14
Заключение …………………………………………….…………………...….…. 15
Список использованных источников ………

Файлы: 1 файл

OpenGL курсовой.docx

— 1.96 Мб (Скачать файл)

      glTexCoord2f( 0.0, 1.0);     glVertex3f(-2.5, 2.5,-2.5);

      glTexCoord2f( 0.0, 0.0);     glVertex3f(-2.5,-2.5,-2.5);

      glTexCoord2f( 1.0, 0.0);     glVertex3f(-2.5,-2.5, 2.5);

      {Right Face}

      glNormal3f( 1.0, 0.0, 0.0);

      glTexCoord2f( 1.0, 1.0);     glVertex3f( 2.5, 2.5,-2.5);

      glTexCoord2f( 0.0, 1.0);     glVertex3f( 2.5, 2.5, 2.5);

      glTexCoord2f( 0.0, 0.0);     glVertex3f( 2.5,-2.5, 2.5);

      glTexCoord2f( 1.0, 0.0);     glVertex3f( 2.5,-2.5,-2.5);

      {Top Face}

      glNormal3f( 0.0, 1.0, 0.0);

      glTexCoord2f( 1.0, 1.0);     glVertex3f( 2.5, 2.5,-2.5);

      glTexCoord2f( 0.0, 1.0);     glVertex3f(-2.5, 2.5,-2.5);

      glTexCoord2f( 0.0, 0.0);     glVertex3f(-2.5, 2.5, 2.5);

      glTexCoord2f( 1.0, 0.0);     glVertex3f( 2.5, 2.5, 2.5);

      {Bottom Face}

      glNormal3f( 0.0,-1.0, 0.0);

      glTexCoord2f( 1.0, 1.0);     glVertex3f(-2.5,-2.5,-2.5);

      glTexCoord2f( 0.0, 1.0);     glVertex3f( 2.5,-2.5,-2.5);

      glTexCoord2f( 0.0, 0.0);     glVertex3f( 2.5,-2.5, 2.5);

      glTexCoord2f( 1.0, 0.0);     glVertex3f(-2.5,-2.5, 2.5);

 

    glEnd;

  glEndList;

 

  CubeList:=BackList+1;

  glNewList(CubeList, GL_COMPILE);

    glBindTexture(GL_TEXTURE_2D, textures[1]);

    glBegin(GL_TRIANGLES);

      {Back Face}

      glNormal3f( 0.0, 0.0,-1.0);

      glTexCoord2f( 0.0, 0.0);     glVertex3f( 0.5,-0.5,-0.5);

      glTexCoord2f( 1.0, 0.0);     glVertex3f(-0.5,-0.5,-0.5);

      glTexCoord2f( 1.0, 1.0);     glVertex3f(-0.5, 0.5,-0.5);

    glEnd;

    glBindTexture(GL_TEXTURE_2D, textures[1]);

    glBegin(GL_TRIANGLES);

      {Left Face}

      glNormal3f(-1.0, 0.0, 0.0);

      glTexCoord2f( 0.0, 1.0);     glVertex3f(-0.5, 0.5,-0.5);

      glTexCoord2f( 0.0, 0.0);     glVertex3f(-0.5,-0.5,-0.5);

      glTexCoord2f( 1.0, 0.0);     glVertex3f(-0.5,-0.5, 0.5);

    glEnd;

    glBindTexture(GL_TEXTURE_2D, textures[2]);

  glEndList;

 

end;

 

var

  CurTime: TDateTime;

  MSecs: integer;

begin

  if OpenGLControl1.MakeCurrent then

  begin

    if not AreaInitialized then begin

      myInit;

      InitGL;

      glMatrixMode (GL_PROJECTION);    { prepare for and then }

      glLoadIdentity ();               { define the projection }

      glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); { transformation }

      glMatrixMode (GL_MODELVIEW);  { back to modelview matrix }

      glViewport (0, 0, OpenGLControl1.Width, OpenGLControl1.Height);

                                    { define the viewport }

      AreaInitialized:=true;

    end;

 

    CurTime:=Now;

    MSecs:=round(CurTime*86400*1000) mod 1000;

    if MSecs<0 then MSecs:=1000+MSecs;

    timer:=msecs-LastMsecs;

    if timer<0 then timer:=1000+timer;

    LastMsecs:=MSecs;

   

//    ParticleEngine.MoveParticles;

   

    glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

    glLoadIdentity;             { clear the matrix }

    glTranslatef (0.0, 0.0,-3.0);  // -2.5); { viewing transformation }

    {rotate}

 

    glPushMatrix;

 

    // draw background

    if blended then begin

      glEnable(GL_BLEND);

      glDisable(GL_DEPTH_TEST);

    end;

    glCallList(BackList);

   

    glPopMatrix;

      

    glPushMatrix;

 

    if MoveCube then begin

//      rx:=rx+0.5*(timer/10);

      ry:=ry+0.025*timer;

//      rz:=rz+0.8*(timer/10);

    end;

   

//    glRotatef(rx,1.0,0.0,0.0);

    glRotatef(ry,0.0,1.0,0.0);

//    glRotatef(rz,0.0,0.0,1.0);

   

 

    // draw cube

    glCallList(CubeList);

    if blended then begin

      glDisable(GL_BLEND);

      glEnable(GL_DEPTH_TEST);

    end;

   

    glPopMatrix;

    OpenGLControl1.SwapBuffers;

  end;

end;

 

procedure TExampleForm.OpenGLControl1Resize(Sender: TObject);

begin

  if (AreaInitialized)

  and OpenGLControl1.MakeCurrent then

    glViewport (0, 0, OpenGLControl1.Width, OpenGLControl1.Height);

end;

 

 

{ TglTexture }

 

destructor TglTexture.Destroy;

begin

  if Data<>nil then FreeMem(Data);

  inherited Destroy;

end;

 

end.                                         

 

 

РЕЗУЛЬТАТЫ РАБОТЫ

Приложение Б

(обязательное)

 

 

 


Рисунок 1 – Расстановка объектов в сцене

 


Рисунок 2 –Текстурирование объектов

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 3 – Движение объектов относительно общей стороны в пространстве

 

 

 


Информация о работе Разработка приложения с использованием OpenGL для динамического изображения трехмерной модели изображения