Отчет по практике в вычислительном центре АМТИ

Автор работы: Пользователь скрыл имя, 15 Марта 2012 в 18:44, отчет по практике

Краткое описание

В работе изложен взгляд на проблему оптимизации работы сотрудников подразделения института “Библиотека АМТИ ”, сделана постановка задачи на разработку АСУ подразделения. Рассмотрены возможности проектирования трёхмерного изображения твердого тела, преобразования графических объектов в пространстве. Выполнены практические задания: трёхмерное изображение сложного твёрдого тела и его проекции в среде AutoCAD 2000; разработана программа в среде С++ Builder, выполняющая преобразования графических объектов пространстве, использующая объект имидж, Open GL, API функции. Реализован алгоритм удаления невидимых линий.

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

Введение 5
1 AutoCAD 2000 – мощный инструмент проектирования трёхмерных объектов 6
2 Исследование работы подразделения «Библиотека АМТИ» 8
3 Программирование трёхмерных объектов в среде C++ Builder 10
4 Алгоритм преобразования объектов в пространстве 12
5 Алгоритмы удаления невидимых линий 13
6 Листинг программы 14
Заключение 33
Литература

Содержимое работы - 1 файл

Отчёт о прохождении практики.doc

— 194.50 Кб (Скачать файл)

//Толщина линий 1

Form1->Image1->Canvas->Pen->Width=1;

//Очистка экрана

Image1->Canvas->Rectangle(0,0, Image1->Width,Image1->Height);

//Рассичитываем координаты линий, обозначающих оси координат

int Ox=(Image1->Width)/2;

int Oy=(Image1->Height)/2;

int ax=Ox;

int ay=0;

int bx=Image1->Width;

int by=Oy;

//рисуем оси координат после очистки экрана

Form1->Image1->Canvas->MoveTo(Ox,Oy);

Form1->Image1->Canvas->LineTo(ax,ay);

Form1->Image1->Canvas->MoveTo(Ox,Oy);

Form1->Image1->Canvas->LineTo(bx,by);

Form1->Image1->Canvas->MoveTo(Ox,Oy);

//Вызов процедуры рисования многогранника средствами C++ Builder

MyF( XYZ2[0][0],XYZ2[1][0],XYZ2[0][1],XYZ2[1][1],XYZ2[0][2],XYZ2[1][2],XYZ2[0][3],XYZ2[1][3],XYZ2[0][4],XYZ2[1][4],XYZ2[0][5],XYZ2[1][5],XYZ2[0][6],XYZ2[1][6],XYZ2[0][7],XYZ2[1][7],XYZ2[0][8],XYZ2[1][8],XYZ2[0][9],XYZ2[1][9]);

//------------------------------------------------------------------------------

 

//Рисование преобразованного многогранника средствами API

Rectangle(Form1->Image2->Canvas->Handle,0,0, Image2->Width,Image2->Height);

//Рассичитываем координаты линий, обозначающих оси координат

Ox=(Image2->Width)/2;

Oy=(Image2->Height)/2;

ax=Ox;

ay=0;

bx=Image2->Width;

by=Oy;

//рисуем оси координат после очистки экрана

Form1->Image2->Canvas->MoveTo(Ox,Oy);

Form1->Image2->Canvas->LineTo(ax,ay);

Image2->Canvas->TextOut(Image2->Canvas->PenPos.x,Image2->Canvas->PenPos.y,"Y");

Form1->Image2->Canvas->MoveTo(Ox,Oy);

Form1->Image2->Canvas->LineTo(bx,by);

Image2->Canvas->TextOut(Image2->Canvas->PenPos.x-8,Image2->Canvas->PenPos.y,"X");

Form1->Image2->Canvas->MoveTo(Ox,Oy);

Image2->Canvas->TextOut(Image2->Canvas->PenPos.x,Image2->Canvas->PenPos.y-12,"Z");

//Вызов процедуры рисования многогранника средствами API

MyFapi( XYZ2[0][0],XYZ2[1][0],XYZ2[0][1],XYZ2[1][1],XYZ2[0][2],XYZ2[1][2],XYZ2[0][3],XYZ2[1][3],XYZ2[0][4],XYZ2[1][4],XYZ2[0][5],XYZ2[1][5],XYZ2[0][6],XYZ2[1][6],XYZ2[0][7],XYZ2[1][7],XYZ2[0][8],XYZ2[1][8],XYZ2[0][9],XYZ2[1][9]);

//-----------------------------------------------------------------------------

 

//Рисование преобразованного многогранника средствами OpenGL

//отражение от плоскости 0XZ в OpenGL

//координатным методом

for (int i=0; i<11; i++)

    coord[1][i]=-coord[1][i];

//очищаем область рисования OpenGL

glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

//цвет линий

      glColor3f(200,200,200);

//толщина линий

      glLineWidth(1.0f);

//снова рисуем оси координат

      glBegin(GL_LINES);

      glVertex3f(0,0,0);

      glVertex3f(1,0,0);

      glEnd();

      glBegin(GL_LINES);

      glVertex3f(0,0,0);

      glVertex3f(0,1,0);

      glEnd();

      glBegin(GL_LINES);

      glVertex3f(0,0,0);

      glVertex3f(0,0,1);

      glEnd();

//сохраняем текущее положение осей координат

      glPushMatrix ();

//сдвигаем многогранник

      glTranslatef((float)dx/300,(float)dy/300,(float)dz/300);

//растягиваем многогранник

      glScalef(k,k,k);

//рисуем многограннник

      MyFogl();

//возвращаем системе координат прежднее положение

      glPopMatrix ();

//возвращаем исходные координаты многограннику

for (int i=0; i<11; i++)

    coord[1][i]=-coord[1][i];

      glFinish();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

//в этой части программы подготавливается использование OpenGL

H =Form1->TabSheet3->Handle;

PIXELFORMATDESCRIPTOR pfd;

int iPixelFormat;

memset(&pfd,0,sizeof( PIXELFORMATDESCRIPTOR));

pfd.nSize=sizeof( PIXELFORMATDESCRIPTOR );

pfd.nVersion=1;

pfd. dwFlags=PFD_DRAW_TO_WINDOW |PFD_SUPPORT_OPENGL;

pfd.iPixelType=PFD_TYPE_RGBA;

pfd.cColorBits=24;

pfd.cDepthBits=32;

pfd.iLayerType=PFD_MAIN_PLANE;

hdc=GetDC(H);

iPixelFormat=ChoosePixelFormat(hdc,&pfd);

SetPixelFormat(hdc,iPixelFormat,&pfd);

hglrc=wglCreateContext(hdc);

if (hglrc) wglMakeCurrent(hdc,hglrc);

//Эти 2 функции необходимы для реализации z-буфера в OpenGL

glClearDepth(1.0);

glEnable(GL_DEPTH_TEST);

}

//---------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

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

В работе выполнены практические задания: трёхмерное изображение сложного твёрдого тела и его проекции в среде AutoCAD 2000; разработана программа в среде С++ Builder, выполняющая преобразования графических объектов пространстве, использующая объект имидж, Open GL, API функции. Реализован алгоритм удаления невидимых линий. Исследована работа подразделения института “Библиотека АМТИ ”, и сделана постановка задачи на разработку АСУ подразделения. Изложен взгляд на проблему оптимизации работы сотрудников данного отдела.

             

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Литература:

1.      Шикин Е. В., Боресков А. В. «Компьютерная графика», М., «Диалог – Мифи», 2001г.

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

3.      Павловская Т. А. «C/C++»,  «Питер», 2002г.

4.      Фаронов В. В. «Delphi 5 учебный курс», М., «Нолидж», 2000г.



Информация о работе Отчет по практике в вычислительном центре АМТИ