скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыДипломная работа: Разработка программной системы, обеспечивающей отображение и сравнение в трехмерном пространстве исходных данных из двух матричных форм

Пожарная безопасность объекта должна обеспечиваться:

а)  системой предотвращения пожара;

б)  системой противопожарной защиты;

в)  организационно-техническими мероприятиями.

Предотвращение пожара в помещении может быть достигнуто минимальным количеством предметов из горючих материалов, их безопасным расположением, а также отсутствием легковоспламеняющихся материалов.

Противопожарная защита помещения может быть обеспечена применением автоматической установки пожарной сигнализации, наличием средств пожаротушения, применением основных строительных конструкций здания с регламентированными пределами огнестойкости.

Организационно-технические мероприятия должны включать организацию обучения служащих правилам пожарной безопасности.

3.4.3 Рекомендации по обеспечению допустимого уровня шума и вибрации в помещениях

Показатели уровня шумов в рабочих помещениях, где будет осуществляться эксплуатация программы должны соответствовать требованиям ГОСТ 12.1.003-83. Допустимый уровень шума при умственном труде, требующем сосредоточенности, 50дБ[2]).

Для уменьшения шума и вибрации в помещении оборудование, аппараты и приборы должны устанавливаться на специальные фундаменты и амортизирующие прокладки. Если стены и потолки помещения являются источниками шумообразования, они должны быть облицованы звукопоглощающим материалом.


Заключение

Анализ существующего подхода к оперативной оценке поступающей информации выявил необходимость разработки и внедрения дополнительных ПС представления информации.

Анализ ПСПИ, разработанных в настоящее время выявил, функциональный, программно-технический, технологический и экономический факторы, сильно ограничивающие их применение для оценки информации.

На основе вышесказанного, определен альтернативный вариант реализации ПС представления информации – самостоятельная разработка с использованием ИСР Borland Delphi 7.0.

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

В ходе работы были сформулированы функциональные, технические, информационные и эргономические требования к программным средствам. В соответствии с этими требованиями была разработана ПСПИ. Оценены эксплуатационно-технические характеристики, надежность и качество. Проведено экономическое обоснование внедрения ПС в специализированные учебные центры и воинские части.

Направлениями дальнейших исследований может быть повышение диапазона отображения и обработка более сложных матричных форм.


Список использованной литературы

1.  Иваненко А. Ю. Оформление документации на программные средства. – М.: Издательство МГТУ им. Баумана, 2002;

2.  Фаронов В. В. Delphi Программирование на языке высокого уровня. – СПБ: «Питер», 2003;

3.  ГОСТ 19.101-77 ЕСПД «Виды программ и программных документов».

4.  ГОСТ 19.402-78 ЕСПД «Описание программы».

5.  ГОСТ 19.701-90 ЕСПД. «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения в соответствии с ним».

6.  ГОСТ 24.211-82 «Требования к содержанию документа «Описание алгоритма»».

7.  Мамиконов А. Г. Модели и методы проектирования информационного обеспечения АСУ. – М.: Статистика, 1978.

8.  ГОСТ ЕСКД, ГОСТ ЕСПД, ГОСТ КС и РД АСУ, ГОСТ СТД АСУ.

9.  Иваненко А. Ю. Оформление документации на программные средства. – М.: Издательство МГТУ им. Баумана, 2002.

10.  Фленов М. Е., DirectX и Delphi. Искусство программирования. – СПб.: БХВ-Петербург, 2006.

11.  Краснов М. В., DirectX. Графика в проектах Delphi. – СПб.: БХВ-Петербург, 2005.

12.  Архангельский А. Я. Программирование на Borland Delphi 7.0. – М: «Бином», 2004.

13.  Актуальные задачи развития Вооруженных сил Российской Федерации // издание «Красная звезда» от 11.10.2003.

14.  Аленичева Е. В., Монастырев П. В. Электронный учебник (проблемы создания и оценки качества) // Высшее образование в России, №1, 2001.

15.  ISO 9126:1991 Информационная технология. Оценка программного продукта. Характеристики качества и руководство по их применению.

16.  ГОСТ Р ИСО/МЭК 9126-93 “Информационные технологии. Оценка программной продукции. Характеристики качества и руководства по их применению”

17.  ГОСТ 19.101-77 ЕСПД «Виды программ и программных документов»

18.  ГОСТ 19.201-78 ЕСПД. Техническое задание. Требования к содержанию и оформлению.

19.  ГОСТ 19.401-78 ЕСПД. «Текст программы. Требования к содержанию и оформлению».

20.  ГОСТ 19.402-78 ЕСПД «Описание программы»

21.  ГОСТ 19.701-90 ЕСПД. «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения в соответствии с ним».

22.  ГОСТ 24.211-82 «Требования к содержанию документа «Описание алгоритма»»

23.  ГОСТ-28195-95 “Оценка качества программных средств. Общие положения”.

24.  ГОСТ 12.1.004-85. ССБТ. Пожарная безопасность.


Приложение А

Алгоритм программы


Приложение Б

Текст программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

ExtCtrls, Menus, OpenGL, Buttons, ExtDlgs, ComCtrls, StdCtrls, Dialogs;

type

TRenderPanel = record

DC:HDC;

HRC:HGLRC;

ps:TPaintStruct;

end;

TMatrix = record

w:Integer; //размерность матрицы

vx:Array of Array of Extended;//массив вершин

nx:Array of Array of Array[1..3] of Extended;//массив нормалей

cx:Array of Array of Array[1..3] of GLfloat;//массив цветов

cc:Array of Array of Array[1..3] of GLfloat;//массив цветов

end;

PMatrix = ^TMatrix;

TMat = class(TForm)

Panel1: TPanel;

OpenPictureDialog1: TOpenPictureDialog;

Panel4: TPanel;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

Edit2: TEdit;

UpDown1: TUpDown;

UpDown2: TUpDown;

Label3: TLabel;

Edit3: TEdit;

GroupBox2: TGroupBox;

Button2: TButton;

FoDialog: TOpenDialog;

Addons: TGroupBox;

SpeedButton1: TSpeedButton;

Button1: TButton;

Button3: TButton;

LBData: TListBox;

ListBox1: TListBox;

cb_Surface: TCheckBox;

progress: TPanel;

Label4: TLabel;

bar: TProgressBar;

ComboBoxMatrix: TComboBox;

BitBtnSave: TBitBtn;

SaveDialogMain: TSaveDialog;

procedure CalcNormals(x1,y1,z1,x2,y2,z2,x3,y3,z3:Extended; var nx,ny,nz:Extended);

procedure GL(var Matrix:TMatrix); //прорисовка матрицы на экран

procedure Init();

procedure SelPos(var Matrix:TMatrix; xx:Integer;yy:Integer);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

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

function LoadMatrixFromBitmap(filename:string; var Matrix:TMatrix):boolean;

function LoadMatrixFromDtFile(filename:string; var Matrix:TMatrix):boolean;

function MakeAnalysMatrixData(Matrix01,Matrix02:TMatrix; var Matrix03:TMatrix):boolean;

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

procedure bmp1Click(Sender: TObject);

procedure Panel4MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Panel4MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Panel4MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit1Change(Sender: TObject);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit2Change(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure cb_SurfaceClick(Sender: TObject);

procedure ComboBoxMatrixChange(Sender: TObject);

procedure Edit3Change(Sender: TObject);

procedure BitBtnSaveClick(Sender: TObject);

private

MyPanels: TRenderPanel;

MCurrent: PMatrix;

myMatrix01:TMatrix; //первое изображение

myMatrix02:TMatrix; //второе изображение

myMatrix03:TMatrix; //наложение первого на второе

// w:Integer; //размерность матрицы

// vx:Array of Array of Extended;//массив вершин

// nx:Array of Array of Array[1..3] of Extended;//массив нормалей

// cx:Array of Array of Array[1..3] of GLfloat;//массив цветов

// cc:Array of Array of Array[1..3] of GLfloat;//массив цветов

mess:string;

bmp:TBitmap;

procedure InitOpenGL;

procedure SetDCPixelFormat(DC:HDC);

end;

var

yess: Boolean;

Mat: TMat;

MouseButton : Integer;

Xcoord, Ycoord, Zcoord : Integer;

YRot, XRot : integer;

Depth : integer;

LastCCX,LastCCY : Integer;

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

implementation

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

uses UAbout;

{$R *.dfm}

procedure TMat.InitOpenGL;

begin

MyPanels.DC:=GetDC(Panel4.Handle);

SetDCPixelFormat(MyPanels.DC);

MyPanels.HRC:=wglCreateContext(MyPanels.DC);

wglMakeCurrent(MyPanels.DC,MyPanels.HRC);

glEnable(GL_DEPTH_TEST);

glClearColor(0,0,0,1);

end;

procedure TMat.SetDCPixelFormat(DC:HDC);

var

pfd:TPixelFormatDescriptor;

nPixelFormat:Integer;

begin

FillChar(pfd,SizeOf(pfd),0);

pfd.dwFlags:=PFD_DOUBLEBUFFER or

PFD_DRAW_TO_WINDOW or

PFD_SUPPORT_OPENGL;

nPixelFormat:=ChoosePixelFormat(DC,@pfd);

SetPixelFormat(DC,nPixelFormat,@pfd);

end;

procedure TMat.FormCreate(Sender: TObject);

begin

MouseButton :=0;

bmp:=TBitmap.Create;

InitOpenGL;

Left:=0;

Top:=0;

LastCCX:=0;

LastCCY:=0;

self.MCurrent := @self.myMatrix01;

self.ComboBoxMatrix.ItemIndex := 0;

// Width:=Screen.Width;

// Height:=Screen.Height;

// WindowState:=wsMaximized;

// Timer1.Enabled:=True;

end;

procedure TMat.FormDestroy(Sender: TObject);

begin

wglMakeCurrent(0,0);

bmp.Destroy;

Finalize(myMatrix01.vx);

Finalize(myMatrix01.cx);

Finalize(myMatrix01.cc);

Finalize(myMatrix01.nx);

Finalize(myMatrix02.vx);

Finalize(myMatrix02.cx);

Finalize(myMatrix02.cc);

Finalize(myMatrix02.nx);

Finalize(myMatrix03.vx);

Finalize(myMatrix03.cx);

Finalize(myMatrix03.cc);

Finalize(myMatrix03.nx);

wglDeleteContext(MyPanels.HRC);

ReleaseDC(MyPanels.DC,Panel4.Handle);

DeleteDC(MyPanels.DC);

end;

procedure TMat.GL(var Matrix:TMatrix);

var

j,k,dw,dv : Integer;

ps : TPaintStruct;

av : Integer;

stroka:string;

begin

av:=0;

dw:=0;

dv:=0;

if (Yess=true) then

begin

GroupBox1.Enabled:=True;

dw:=Matrix.w div 2;

dv:=25 div 2;

BeginPaint(Panel4.Handle,ps);

wglMakeCurrent(MyPanels.DC,MyPanels.HRC);

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

glMatrixMode(GL_PROJECTION);

glLoadIdentity;

gluPerspective(30,Panel4.Width/Panel4.Height,1,10000);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity;

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

glLoadIdentity;

glTranslatef(0,0,-Zcoord);

glRotatef(Xrot,1,0,0);

glRotatef(Yrot,0,1,0);

try

if (Matrix.w>5) then

If cb_Surface.Checked then av:=2 else av:=1;

case av of

1 : begin

glDisable(GL_LIGHTING);

glDisable(GL_LIGHT0);

glColor3f(1,1,1);

glBegin(GL_LINES);

for j:=0 to Matrix.w-2 do

for k:=0 to Matrix.w-2 do

begin

glColor3f(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);

glVertex3f(j-dw,Matrix.vx[j,k]-dv,k-dw);

glColor3f(Matrix.cx[j,k+1,1],Matrix.cx[j,k+1,2],Matrix.cx[j,k+1,3]);

glVertex3f(j-dw,Matrix.vx[j,k+1]-dv,k+1-dw);

end;

for j:=0 to Matrix.w-2 do

for k:=0 to Matrix.w-2 do

begin

glColor3f(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);

glVertex3f(j-dw,Matrix.vx[j,k]-dv,k-dw);

glColor3f(Matrix.cx[j+1,k,1],Matrix.cx[j+1,k,2],Matrix.cx[j+1,k,3]);

glVertex3f(j+1-dw,Matrix.vx[j+1,k]-dv,k-dw);

end;

glEnd;

end;

2 : begin

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glEnable(GL_COLOR_MATERIAL);

glColor3f(1,1,1);

glBegin(GL_TRIANGLES);

for j:=0 to Matrix.w-2 do

for k:=0 to Matrix.w-2 do

begin

glColor3f(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);

glNormal3f(Matrix.nx[j,k,1],Matrix.nx[j,k,2],Matrix.nx[j,k,3]);

glVertex3f(j-dw,Matrix.vx[j,k]-dv,k-dw);

glColor3f(Matrix.cx[j+1,k,1],Matrix.cx[j+1,k,2],Matrix.cx[j+1,k,3]);

glNormal3f(Matrix.nx[j+1,k,1],Matrix.nx[j+1,k,2],Matrix.nx[j+1,k,3]);

glVertex3f(j-dw+1,Matrix.vx[j+1,k]-dv,k-dw);

glColor3f(Matrix.cx[j+1,k+1,1],Matrix.cx[j+1,k+1,2],Matrix.cx[j+1,k+1,3]);

glNormal3f(Matrix.nx[j+1,k+1,1],Matrix.nx[j+1,k+1,2],Matrix.nx[j+1,k+1,3]);

glVertex3f(j-dw+1,Matrix.vx[j+1,k+1]-dv,k-dw+1);

end;

for j:=0 to Matrix.w-2 do

for k:=0 to Matrix.w-2 do

begin

glColor3f(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);

glNormal3f(Matrix.nx[j,k,1],Matrix.nx[j,k,2],Matrix.nx[j,k,3]);

glVertex3f(j-dw,Matrix.vx[j,k]-dv,k-dw);

glColor3f(Matrix.cx[j,k+1,1],Matrix.cx[j,k+1,2],Matrix.cx[j,k+1,3]);

glNormal3f(Matrix.nx[j,k+1,1],Matrix.nx[j,k+1,2],Matrix.nx[j,k+1,3]);

glVertex3f(j-dw,Matrix.vx[j,k+1]-dv,k-dw+1);

glColor3f(Matrix.cx[j+1,k+1,1],Matrix.cx[j+1,k+1,2],Matrix.cx[j+1,k+1,3]);

glNormal3f(Matrix.nx[j+1,k+1,1],Matrix.nx[j+1,k+1,2],Matrix.nx[j+1,k+1,3]);

glVertex3f(j-dw+1,Matrix.vx[j+1,k+1]-dv,k-dw+1);

end;

glEnd;

glDisable(GL_COLOR_MATERIAL);

end;

end;

except

Matrix.w:=0;

MessageBox(Handle,'Ошибка при прорисовке изображения',

'Ошибка',MB_OK or MB_ICONERROR);

end;

EndPaint(Panel4.Handle,ps);

glRotatef(120,1.0,0.0,0.0); // Rotate on x

glRotatef(120,0.0,1.0,0.0); // Rotate on y

glRotatef(120,0.0,0.0,1.0); // Rotate on z

SwapBuffers(MyPanels.DC);

//временная защита кода

// stroka := 'Это демонстрационная версия!!!';

// TextOut(myPanels.DC,300,200,PChar(stroka),Length(stroka));

// stroka := 'Программа сделана на заказ!!!';

// TextOut(myPanels.DC,300,220,PChar(stroka),Length(stroka));

// stroka := 'лоалофв аофоа длфыв а лдо';

// TextOut(myPanels.DC,300,240,PChar(stroka),Length(stroka));

end;

end;

procedure TMat.SelPos(var Matrix:TMatrix; xx:Integer;yy:Integer);

var

fx:Integer;

s:string;

begin

if (Matrix.w>0) then

begin

for fx := 0 to Matrix.w-1 do

begin

Matrix.cx[LastCCx,fx,1]:=Matrix.cc[LastCCx,fx,1];

Matrix.cx[LastCCx,fx,2]:=Matrix.cc[LastCCx,fx,2];

Matrix.cx[LastCCx,fx,3]:=Matrix.cc[LastCCx,fx,3];

Matrix.cx[fx,LastCCy,1]:=Matrix.cc[fx,LastCCy,1];

Matrix.cx[fx,LastCCy,2]:=Matrix.cc[fx,LastCCy,2];

Matrix.cx[fx,LastCCy,3]:=Matrix.cc[fx,LastCCy,3];

Matrix.cx[xx,fx,1]:=1;

Matrix.cx[xx,fx,2]:=1;

Matrix.cx[xx,fx,3]:=1;

Matrix.cx[fx,yy,1]:=1;

Matrix.cx[fx,yy,2]:=1;

Matrix.cx[fx,yy,3]:=1;

end;

LastCCx:=xx;

LastCCy:=yy;

s:=FormatFloat('0.00', Matrix.vx[LastCCx,LastCCy]);

// if Matrix.vx[LastCCx,LastCCy] < 0 then s:= '-'+s;

// Edit3.Text:=FloatToStr(Round(Matrix.vx[LastCCx,LastCCy]*100)/100);

Edit3.Text := s;

end; трехмерный изображение матричный графический

Страницы: 1, 2, 3, 4, 5


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.