Автор работы: Пользователь скрыл имя, 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
Form1->Image1->Canvas->Pen->
//Очистка экрана
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(
Form1->Image1->Canvas->LineTo(
Form1->Image1->Canvas->MoveTo(
Form1->Image1->Canvas->LineTo(
Form1->Image1->Canvas->MoveTo(
//Вызов процедуры рисования многогранника средствами C++ Builder
MyF( XYZ2[0][0],XYZ2[1][0],XYZ2[0][
//----------------------------
//Рисование преобразованного многогранника средствами API
Rectangle(Form1->Image2->
//Рассичитываем координаты линий, обозначающих оси координат
Ox=(Image2->Width)/2;
Oy=(Image2->Height)/2;
ax=Ox;
ay=0;
bx=Image2->Width;
by=Oy;
//рисуем оси координат после очистки экрана
Form1->Image2->Canvas->MoveTo(
Form1->Image2->Canvas->LineTo(
Image2->Canvas->TextOut(
Form1->Image2->Canvas->MoveTo(
Form1->Image2->Canvas->LineTo(
Image2->Canvas->TextOut(
Form1->Image2->Canvas->MoveTo(
Image2->Canvas->TextOut(
//Вызов процедуры рисования многогранника средствами API
MyFapi( XYZ2[0][0],XYZ2[1][0],XYZ2[0][
//----------------------------
//Рисование преобразованного многогранника средствами 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,(
//растягиваем многогранник
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=
SetPixelFormat(hdc,
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г.
Информация о работе Отчет по практике в вычислительном центре АМТИ