Автор работы: Пользователь скрыл имя, 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
Список использованных источников ………
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);
AreaInitialized:=true;
end;
CurTime:=Now;
MSecs:=round(CurTime*86400*
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.
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 – Движение объектов относительно общей стороны в пространстве