Перечень принятых сокращений 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перечень принятых сокращений



Перечень принятых сокращений

 

АРМ - автоматизированное рабочее место;

АСУ - автоматизированная система управления;

ВКО - воздушно-космическая оборона;

ИСР - интегрированная среда разработки;

КИТ - компьютерные информационные технологии;

КП - командный пункт;

КСА - комплекс средств автоматизации;

КСО - компьютерные средства обучения;

ЛБР - лицо (лица) боевого расчета;

ЛВС - локальная вычислительная сеть;

МСВС - мобильная система вооруженных сил;

НЖМД - накопитель на жестких магнитных дисках;

ОЗУ - оперативное запоминающее устройство;

ОС - операционная система;

ПС - программные средства;

ППП - пакет прикладных программ;

ПЭВМ - персональная электронно-вычислительная машина;

ПСПИ - программная система представления информации.


Введение

 

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

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

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

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

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

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

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

Дипломный проект состоит из введения, 3 разделов и заключения.

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

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

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

.  
Общесистемный раздел

Требования к входной и выходной информации

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

Входной информацией для ПС представления информации является симметричная матричная форма.

Выходной информацией для ПС представления информации является:

а) трехмерное представление входных данных;

б) трехмерное отображение результата сравнения;

в) цифровое значение отдельных областей изображения.

 

1.4.3 Эргономические требования

Для обеспечения комфортной работы пользователей с ПСПИ она должна соответствовать требованиям ГОСТ РВ 29.05.ХХХ - «Система стандартов эргономических требований и эргономического обеспечения. Общие эргономические требования».

 

1.4.4 Технические требования

Технические и программные средства, предназначенные для обеспечения функционирования разработанного комплекса ПО должны с одной стороны обеспечивать комфортную работу с программой и обеспечивать защиту, циркулирующей информации от несанкционированного доступа, а с другой - удовлетворять требованиям общего и специального программного обеспечения при заданной конфигурации вычислительных средств. Кроме того, технические требования и программные средства, предназначенные для функционирования ПС должны удовлетворять аппаратным и программным характеристикам вычислительных средств используемых в процессе боевой подготовки ЛБР и учебном процессе специализированных учебных центров.

Рекомендуемые технические характеристики ПЭВМ для функционирования ПС оценки уровня обученности ЛБР приведены в таблице 1.2.

 

Таблица 1.2 - Технические характеристики ПЭВМ

Параметры технических средств Значения параметров
Процессор Intel Pentium II - 1600 МГц
ОЗУ не менее 256 Мб
НЖМД не менее 40 Гб
Разрешение монитора 1024*768

 

Кроме того, ПЭВМ должна быть оснащена клавиатурой, манипулятором типа «мышь» (или трекбол).

Для обеспечения функционирования ПС представления информации на ПЭВМ должны быть установлены ОС Windows NT, XP, Vista и пакет MS Office 2000 и выше.

Требования к документации

Документация на ПСПИ должна быть разработана в соответствии с требованиями приказа ГК ВВС 2000г. №029 «О введении в действие руководства по разработке программной продукции военного назначения в ВВС» и требованиями ГОСТ ЕСПД.

Документация на ПСПИ должна включать четыре документа:

а) постановка задачи;

б) алгоритм функционирования комплекса;

в) описание программы комплекса;

г)  инструкция пользователю комплекса.

 

Специальный раздел

Исходный текст программы

 

Исходный текст программы разработан в соответствии с требованиями ГОСТ 19.401-78 и представлен в приложении 2.


Эксплуатационный раздел

Оценка надежности

В соответствии с ГОСТ 13.377-75, надежность - свойства объекта выполнять заданные функции, сохраняя во времени значения установленных эксплуатационных показателей в заданных пределах, соответствующих заданным режимам и условиям использования, технического обслуживания, ремонта, хранения и транспортирования.

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

Опытная эксплуатация ПСПИ показала её способность к безотказному функционированию после возникновения каких-либо сбоев. После перезапуска - рестарта функционирование восстанавливается полностью.

Это позволяет сделать заключение о надежности разработанной ПС представления информации.

 

Рекомендации по обеспечению безопасной жизнедеятельности при работе с ПСПИ

 

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

 

Рекомендации по обеспечению электробезопасности

Источником питающего напряжения ПЭВМ должна быть сеть переменного тока с напряжением 220 В, на которую распространяется ГОСТ 25861-83.

Для предупреждения поражений электрическим током необходимо:

а) чётко и в полном объёме выполнять правила производства работ и правила технической эксплуатации;

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

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

г)  подводить электропитание к ПЭВМ от розетки здания при помощи специальной вилки с заземляющим контактом;

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

е)  надёжно подключить к заземляющим зажимам металлические части, доступные для оператора, которые в результате повреждения изоляции могут оказаться под опасным напряжением;

ж) проверить, что защитный заземляющий проводник не имеет выключателей и предохранителей и надёжно изолирован.

 

Рекомендации по обеспечению пожарной безопасности

Пожарная безопасность помещений, имеющих электрические сети, регламентируется ГОСТ 12.1.033-81, ГОСТ 12.1.004-85. Работа оператора ЭВМ должна вестись в помещении, соответствующем категории Д. Огнестойкость здания должна соответствовать СНиП 2.01.02-85.

В конструкции дисплеев должны использоваться специальные разъемы, уменьшающие переходное сопротивление, и, соответственно, нагрев. ЭВМ нельзя располагать вблизи источников тепла или термоизлучателей, на экраны дисплеев не должны падать прямые солнечные лучи. Устанавливать ЭВМ необходимо так, чтобы задняя и боковые стенки отстояли не менее чем на 0.2 м от других предметов. Для соблюдения теплового режима в корпусе ЭВМ должны быть предусмотрены вентиляционные отверстия и охлаждающий вентилятор. Внутренний монтаж должен быть выполнен проводом с повышенной теплостойкостью.

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

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

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

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

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

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

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

 

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

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

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


Заключение

 

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

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

На основе вышесказанного, определен альтернативный вариант реализации ПС представления информации - самостоятельная разработка с использованием ИСР 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. ГОСТ ЕСКД, ГОСТ ЕСПД, ГОСТ КС и РД АСУ, ГОСТ СТД АСУ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Приложение А

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


Приложение Б

 

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

 

unit Unit1;

interface, Messages, SysUtils, Classes, Graphics, Controls, Forms,, Menus, OpenGL, Buttons, ExtDlgs, ComCtrls, StdCtrls, Dialogs;= record:HDC;:HGLRC;:TPaintStruct;;= record:Integer; //размерность матрицы:Array of Array of Extended;//массив вершин:Array of Array of Array[1..3] of Extended;//массив нормалей:Array of Array of Array[1..3] of GLfloat;//массив цветов:Array of Array of Array[1..3] of GLfloat;//массив цветов;= ^TMatrix;= class(TForm): TPanel;: TOpenPictureDialog;: TPanel;: TGroupBox;: TLabel;: TLabel;: TEdit;: TEdit;: TUpDown;: TUpDown;: TLabel;: TEdit;: TGroupBox;: TButton;: TOpenDialog;: TGroupBox;: TSpeedButton;: TButton;: TButton;: TListBox;: TListBox;_Surface: TCheckBox;: TPanel;: TLabel;: TProgressBar;: TComboBox;: TBitBtn;: TSaveDialog;CalcNormals(x1,y1,z1,x2,y2,z2,x3,y3,z3:Extended; var nx,ny,nz:Extended);GL(var Matrix:TMatrix); //прорисовка матрицы на экранInit();SelPos(var Matrix:TMatrix; xx:Integer;yy:Integer);FormCreate(Sender: TObject);FormDestroy(Sender: TObject);

//---------------------------------LoadMatrixFromBitmap(filename:string; var Matrix:TMatrix):boolean;LoadMatrixFromDtFile(filename:string; var Matrix:TMatrix):boolean;MakeAnalysMatrixData(Matrix01,Matrix02:TMatrix; var Matrix03:TMatrix):boolean;

//---------------------------------bmp1Click(Sender: TObject);Panel4MouseDown(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);Panel4MouseMove(Sender: TObject; Shift: TShiftState; X,: Integer);Panel4MouseUp(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);Edit1KeyPress(Sender: TObject; var Key: Char);Edit1Change(Sender: TObject);Edit2KeyPress(Sender: TObject; var Key: Char);Edit2Change(Sender: TObject);Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);Button4Click(Sender: TObject);cb_SurfaceClick(Sender: TObject);ComboBoxMatrixChange(Sender: TObject);Edit3Change(Sender: TObject);BitBtnSaveClick(Sender: TObject);: TRenderPanel;: PMatrix;:TMatrix; //первое изображение02: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;//массив цветов:string;:TBitmap;InitOpenGL;SetDCPixelFormat(DC:HDC);;: Boolean;: TMat;: Integer;, Ycoord, Zcoord: Integer;, XRot: integer;: integer;,LastCCY: Integer;

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

//-----------------------------------------------------------------------------UAbout;

{$R *.dfm}TMat.InitOpenGL;.DC:=GetDC(Panel4.Handle);(MyPanels.DC);.HRC:=wglCreateContext(MyPanels.DC);(MyPanels.DC,MyPanels.HRC);(GL_DEPTH_TEST);(0,0,0,1);;TMat.SetDCPixelFormat(DC:HDC);:TPixelFormatDescriptor;:Integer;(pfd,SizeOf(pfd),0);.dwFlags:=PFD_DOUBLEBUFFER or_DRAW_TO_WINDOW or_SUPPORT_OPENGL;:=ChoosePixelFormat(DC,@pfd);(DC,nPixelFormat,@pfd);;TMat.FormCreate(Sender: TObject);:=0;:=TBitmap.Create;;:=0;:=0;:=0;:=0;.MCurrent:= @self.myMatrix01;.ComboBoxMatrix.ItemIndex:= 0;

// Width:=Screen.Width;

// Height:=Screen.Height;

// WindowState:=wsMaximized;

// Timer1.Enabled:=True;;TMat.FormDestroy(Sender: TObject);(0,0);.Destroy;(myMatrix01.vx);(myMatrix01.cx);(myMatrix01.cc);(myMatrix01.nx);(myMatrix02.vx);(myMatrix02.cx);(myMatrix02.cc);(myMatrix02.nx);(myMatrix03.vx);(myMatrix03.cx);(myMatrix03.cc);(myMatrix03.nx);(MyPanels.HRC);(MyPanels.DC,Panel4.Handle);(MyPanels.DC);;TMat.GL(var Matrix:TMatrix);,k,dw,dv: Integer;: TPaintStruct;: Integer;:string;:=0;:=0;:=0;(Yess=true) then.Enabled:=True;:=Matrix.w div 2;:=25 div 2;(Panel4.Handle,ps);(MyPanels.DC,MyPanels.HRC);(0,0,Panel4.Width,Panel4.Height);(GL_PROJECTION);;(30,Panel4.Width/Panel4.Height,1,10000);(GL_MODELVIEW);;(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);;(0,0,-Zcoord);(Xrot,1,0,0);(Yrot,0,1,0);(Matrix.w>5) thencb_Surface.Checked then av:=2 else av:=1;av of

: begin(GL_LIGHTING);(GL_LIGHT0);f(1,1,1);(GL_LINES);j:=0 to Matrix.w-2 dok:=0 to Matrix.w-2 dof(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);f(j-dw,Matrix.vx[j,k]-dv,k-dw);f(Matrix.cx[j,k+1,1],Matrix.cx[j,k+1,2],Matrix.cx[j,k+1,3]);f(j-dw,Matrix.vx[j,k+1]-dv,k+1-dw);;j:=0 to Matrix.w-2 dok:=0 to Matrix.w-2 dof(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);f(j-dw,Matrix.vx[j,k]-dv,k-dw);f(Matrix.cx[j+1,k,1],Matrix.cx[j+1,k,2],Matrix.cx[j+1,k,3]);f(j+1-dw,Matrix.vx[j+1,k]-dv,k-dw);;;;

: begin(GL_LIGHTING);(GL_LIGHT0);(GL_COLOR_MATERIAL);f(1,1,1);(GL_TRIANGLES);j:=0 to Matrix.w-2 dok:=0 to Matrix.w-2 dof(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);f(Matrix.nx[j,k,1],Matrix.nx[j,k,2],Matrix.nx[j,k,3]);f(j-dw,Matrix.vx[j,k]-dv,k-dw);f(Matrix.cx[j+1,k,1],Matrix.cx[j+1,k,2],Matrix.cx[j+1,k,3]);f(Matrix.nx[j+1,k,1],Matrix.nx[j+1,k,2],Matrix.nx[j+1,k,3]);f(j-dw+1,Matrix.vx[j+1,k]-dv,k-dw);f(Matrix.cx[j+1,k+1,1],Matrix.cx[j+1,k+1,2],Matrix.cx[j+1,k+1,3]);f(Matrix.nx[j+1,k+1,1],Matrix.nx[j+1,k+1,2],Matrix.nx[j+1,k+1,3]);f(j-dw+1,Matrix.vx[j+1,k+1]-dv,k-dw+1);;j:=0 to Matrix.w-2 dok:=0 to Matrix.w-2 dof(Matrix.cx[j,k,1],Matrix.cx[j,k,2],Matrix.cx[j,k,3]);f(Matrix.nx[j,k,1],Matrix.nx[j,k,2],Matrix.nx[j,k,3]);f(j-dw,Matrix.vx[j,k]-dv,k-dw);f(Matrix.cx[j,k+1,1],Matrix.cx[j,k+1,2],Matrix.cx[j,k+1,3]);f(Matrix.nx[j,k+1,1],Matrix.nx[j,k+1,2],Matrix.nx[j,k+1,3]);f(j-dw,Matrix.vx[j,k+1]-dv,k-dw+1);f(Matrix.cx[j+1,k+1,1],Matrix.cx[j+1,k+1,2],Matrix.cx[j+1,k+1,3]);f(Matrix.nx[j+1,k+1,1],Matrix.nx[j+1,k+1,2],Matrix.nx[j+1,k+1,3]);f(j-dw+1,Matrix.vx[j+1,k+1]-dv,k-dw+1);;;(GL_COLOR_MATERIAL);;;.w:=0;(Handle,'Ошибка при прорисовке изображения',

'Ошибка',MB_OK or MB_ICONERROR);;(Panel4.Handle,ps);(120,1.0,0.0,0.0); // Rotate on x(120,0.0,1.0,0.0); // Rotate on y(120,0.0,0.0,1.0); // Rotate on z(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));;;TMat.SelPos(var Matrix:TMatrix; xx:Integer;yy:Integer);:Integer;:string;(Matrix.w>0) thenfx:= 0 to Matrix.w-1 do.cx[LastCCx,fx,1]:=Matrix.cc[LastCCx,fx,1];.cx[LastCCx,fx,2]:=Matrix.cc[LastCCx,fx,2];.cx[LastCCx,fx,3]:=Matrix.cc[LastCCx,fx,3];.cx[fx,LastCCy,1]:=Matrix.cc[fx,LastCCy,1];.cx[fx,LastCCy,2]:=Matrix.cc[fx,LastCCy,2];.cx[fx,LastCCy,3]:=Matrix.cc[fx,LastCCy,3];.cx[xx,fx,1]:=1;.cx[xx,fx,2]:=1;.cx[xx,fx,3]:=1;.cx[fx,yy,1]:=1;.cx[fx,yy,2]:=1;.cx[fx,yy,3]:=1;;:=xx;:=yy;:=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);3.Text:= s;

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

end;

//-----------------------------------------------------------------------------TMat.LoadMatrixFromBitmap(filename:string; var Matrix:TMatrix):boolean;,j:Integer;: string;:= false;not FileExists(filename) then exit;Matrix do.Width:=0;.Height:=0;.LoadFromFile(OpenPictureDialog1.FileName);:=bmp.Width;.Max:=w;.Max:=w;:=w div 2;:=w div 2;(vx,w);(nx,w);(cx,w);(cc,w);i:=0 to w-1 do(vx[i],w);(nx[i],w);(cx[i],w);(cc[i],w);;:='';.Items.Clear;i:=0 to w-1 doj:=0 to w-1 do[i,j]:=(GetRValue(bmp.Canvas.Pixels[i,j])+(bmp.Canvas.Pixels[i,j])+(bmp.Canvas.Pixels[i,j]))/50;vx[i,j]>10 then vx[i,j]:=9+(random(99)+1)/100;:=ss+FormatFloat('0.00', vx[i,j])+' ';[i,j,1]:=GetRValue(bmp.Canvas.Pixels[i,j])/255;[i,j,2]:=GetGValue(bmp.Canvas.Pixels[i,j])/255;[i,j,3]:=GetBValue(bmp.Canvas.Pixels[i,j])/255;[i,j,1]:=GetRValue(bmp.Canvas.Pixels[i,j])/255;[i,j,2]:=GetGValue(bmp.Canvas.Pixels[i,j])/255;[i,j,3]:=GetBValue(bmp.Canvas.Pixels[i,j])/255;;.Items.Add(ss);:='';;:=w*2;(Matrix, LastCCX, LastCCY);.Position:=LastCCX;.Position:=LastCCY;;:= true;;TMat.LoadMatrixFromDtFile(filename:string; var Matrix:TMatrix):boolean;,x,y,j,k,posp,posbar:Integer;,sfl,ss,formfl:String;: TFloatRec;: Extended;:integer;:Extended;:= false;not FileExists(filename) then exit;Matrix do.Items.Clear;.Position:=0;.Visible:=True;.Update;.Items.LoadFromFile(FileName);LBData.Items.Count>5 then.Position:=5;.Update;:=LBData.Items.Count;.Max:=w;.Max:=w;:=w div 2;:=w div 2;(vx,w);(nx,w);(cx,w);(cc,w);i:=0 to w-1 do(vx[i],w);(nx[i],w);(cx[i],w);(cc[i],w);y:=0 to w-1 do[i,y]:=0;[i,y,1]:=0;[i,y,2]:=0;[i,y,3]:=0;[i,y,1]:=0;[i,y,2]:=0;[i,y,3]:=0;[i,y,1]:=0;[i,y,2]:=0;[i,y,3]:=0;;;:=True;:='';y:=0 to w-1 do:=LBData.Items[y];:=0;(((pos(' ',spr)>0) or (Length(spr)>0)) and (Yess=True) and (x<w)) do:=pos(' ',spr);(posp>0) then:=trim (copy(spr,0,posp));(spr,1,posp);:=strtofloatdef(sfl,-100);(ValStr=-100) then:=False;(Length(mess)=0) then mess:='Неверное значение'+#13#10+'строка '+ IntToStr(y+1)+#13#10+'позиция '+IntToStr(x+1)+#13#10+'['+sfl+']';;;((ValStr<-10) or (ValStr>10)) then:=False;(Length(mess)=0) then mess:='Значение >10, либо <-10'+#13#10+'строка '+ IntToStr(y+1)+#13#10+'позиция '+IntToStr(x+1)+#13#10+'['+sfl+']';;else vx[x,y]:=ValStr;else:=Trim(spr);:=strtofloatdef(spr,-100);(ValStr=-100) then:=False;(Length(mess)=0) then mess:='Неверное значение'+#13#10+'строка '+ IntToStr(y+1)+#13#10+'позиция '+IntToStr(x+1)+#13#10+'['+spr+']';;;((ValStr<-10) or (ValStr>10)) then:=False;(Length(mess)=0) then mess:='Значение >10, либо <-10'+#13#10+'строка '+ IntToStr(y+1)+#13#10+'позиция '+IntToStr(x+1)+#13#10+'['+spr+']';;else vx[x,y]:=ValStr;:='';;(x);;:= FormatFloat('0',70*(((y+1)*(x))/(w*w)));:=StrToInt(formfl);.Position:=5+coint;.Update;

// mat.Caption:=mat.Caption+inttostr(x)+' ';(x<w) then:=false;(Length(mess)=0) then mess:='строка '+ IntToStr(y+1)+#13#10+'короткая, либо излишек строк в файле';;;(spr<>'') then:=false;(Length(mess)=0) then mess:='строка '+ IntToStr(y+1)+#13#10+'длинная, либо недостаточно строк в файле';;;;else:=false;

mess:='Форма должна иметь'+#13#10+'размер более чем 5х5';

end;Yess=true then.Position:=90;.Update;i:=0 to w-1 doj:=0 to w-1 do[i,j,1]:=(vx[i,j]+1)/9;[i,j,2]:=1-vx[i,j+1]/9;[i,j,3]:=0;[i,j,1]:=(vx[i,j]+1)/9;[i,j,2]:=1-vx[i,j+1]/9;[i,j,3]:=0;;;i:=0 to w-1 doj:=0 to w-1 dok:=1 to 3 do[i,j,k]:=1;i:=0 to w-2 doj:=0 to w-2 do(i,vx[i,j],j,+1,vx[i+1,j],j,+1,vx[i+1,j+1],j+1,[i,j,1],nx[i,j,2],nx[i,j,3]);;.Position:=100;.Update;:=w*2;:=90;:=0;.Position:=LastCCX;.Position:=LastCCY;(Matrix,LastCCX, LastCCY);.Hide;.Show;;;:= Yess;;

//-----------------------------------------------------------------------------TMat.bmp1Click(Sender: TObject);OpenPictureDialog1.Execute thenFileExists(OpenPictureDialog1.FileName) then.LoadMatrixFromBitmap(OpenPictureDialog1.FileName,self.MCurrent^);.GL(self.MCurrent^);else(Handle,('Файл '+OpenPictureDialog1.FileName+' не найден'),

'Ошибка',MB_OK or MB_ICONERROR);(Handle,('Ошибка во время загрузки файла '+.FileName),

'Ошибка',MB_OK or MB_ICONERROR);;;TMat.Panel4MouseDown(Sender: TObject;: TMouseButton; Shift: TShiftState; X, Y: Integer);Button = mbLeft then:=1;:= X;:= Y;;Button = mbRight then:=2;:= Y;;;TMat.Panel4MouseMove(Sender: TObject; Shift: TShiftState;, Y: Integer);MouseButton = 1 then:= xRot + (Y - Ycoord) div 2; // moving up and down = rot around X-axis:= yRot + (X - Xcoord)div 2;:= X;:= Y;(self.MCurrent^);; MouseButton = 2 then:=Depth - (Y-ZCoord) div 3;:= Y;(self.MCurrent^);;

// caption:=inttostr(xRot)+':'+inttostr(yRot);;TMat.Panel4MouseUp(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);:=0;;TMat.Edit1KeyPress(Sender: TObject; var Key: Char);Ord(Key)<>8 then if ((key<'0') or (key>'9')) then Key:=#0;;TMat.Edit1Change(Sender: TObject);:Integer;TryStrToInt(Edit1.Text,x)beginx>self.MCurrent^.w then Edit1.Text:=IntToStr(self.MCurrent^.w);x<2 then Edit1.Text:='1';begin.Text:='1';;(self.MCurrent^,UpDown1.Position-1,LastCCY);(self.MCurrent^);;TMat.Edit2KeyPress(Sender: TObject; var Key: Char);Ord(Key)<>8 then if ((key<'0') or (key>'9')) then Key:=#0;;TMat.Edit2Change(Sender: TObject);:Integer;TryStrToInt(Edit2.Text,x)beginx>self.MCurrent^.w then Edit2.Text:=IntToStr(self.MCurrent^.w);x<2 then Edit2.Text:='1';begin.Text:='1';;(self.MCurrent^,LastCCX,UpDown2.Position-1);(self.MCurrent^);;TMat.CalcNormals(x1,y1,z1,x2,y2,z2,x3,y3,z3:Extended; var nx,ny,nz:Extended);: Double;,vy1,vz1,vx2,vy2,vz2: Double;:=x1-x2;:=y1-y2;:=z1-z2;:=x2-x3;:=y2-y3;:=z2-z3;:=sqrt(sqr(vy1*vz2-vz1*vy2)+sqr(vz1*vx2-vx1*vz2)+sqr(vx1*vy2-vy1*vx2));:=-(vy1 * vz2 - vz1 * vy2)/wrki;:=-(vz1 * vx2 - vx1 * vz2)/wrki;:=-(vx1 * vy2 - vy1 * vx2)/wrki;;TMat.Button1Click(Sender: TObject);.Items.SaveToFile(ChangeFileExt(Application.ExeName,'.txt'));;TMat.Init();.OnChange:=Edit1Change;.OnKeyPress:=Edit1KeyPress;.OnChange:=Edit2Change;.OnKeyPress:=Edit2KeyPress;.OnMouseDown:=Panel4MouseDown;.OnMouseMove:=Panel4MouseMove;.OnMouseUp:=Panel4MouseUp;;TMat.Button3Click(Sender: TObject);.ShowModal;;TMat.Button4Click(Sender: TObject);.OnChange:=nil;.OnKeyPress:=nil;.OnChange:=nil;.OnKeyPress:=nil;.OnMouseDown:=nil;.OnMouseMove:=nil;.OnMouseUp:=nil;;;

//проводим анализ данных, точки совпадения красным, ниже синим, выше зеленым

function TMat.MakeAnalysMatrixData(Matrix01,Matrix02:TMatrix; var Matrix03:TMatrix):boolean;,j,k,y:integer;

Result:= false;

//инициализация результ. матрицы

Matrix03.w:= Matrix01.w;Matrix03 do(vx,w);(nx,w);(cx,w);(cc,w);i:=0 to w-1 do(vx[i],w);(nx[i],w);(cx[i],w);(cc[i],w);y:=0 to w-1 do[i,y]:=Matrix01.vx[i,y];[i,y,1]:=Matrix01.nx[i,y,1];[i,y,2]:=Matrix01.nx[i,y,2];[i,y,3]:=Matrix01.nx[i,y,3];[i,y,1]:=Matrix01.cx[i,y,1];[i,y,2]:=Matrix01.cx[i,y,2];[i,y,3]:=Matrix01.cx[i,y,3];[i,y,1]:=Matrix01.cc[i,y,1];[i,y,2]:=Matrix01.cc[i,y,2];[i,y,3]:=Matrix01.cc[i,y,3];[i,y,1]:=255;[i,y,2]:=255;[i,y,3]:=255;

//часть первого, которая не пересеклась со вторым

//окрашиваем в желтый цвет

if Matrix02.vx[i,y] = 0 then

begin[i,y,1]:=(vx[i,y]+1)/6;[i,y,2]:=(vx[i,y]+1)/6;[i,y,3]:=0;;

//часть второго, которая не пересеклась с первой

//окрашиваем в красный цвет

if Matrix01.vx[i,y] = 0 then

begin[i,y]:=Matrix02.vx[i,y];[i,y,1]:=(vx[i,y]+1)/6;[i,y,2]:=0;[i,y,3]:=0;

end;

//если нет поверхностей => зеленый

if (Matrix01.vx[i,y] = 0)(Matrix02.vx[i,y] = 0)then[i,y,1]:=0;[i,y,2]:=(vx[i,y]+1)/2;[i,y,3]:=0;

end;

//совпадающие обозначае зеленым цветом

if (Matrix01.vx[i,y] = Matrix02.vx[i,y])(Matrix01.vx[i,y] <> 0)(Matrix02.vx[i,y] <> 0)then[i,y,1]:=0;[i,y,2]:=(vx[i,y]+1)/2;[i,y,3]:=0;

end;

//те, которые выше - делаем зеленым

if (Matrix01.vx[i,y] < Matrix02.vx[i,y])(Matrix01.vx[i,y] <> 0)(Matrix02.vx[i,y] <> 0)then[i,y]:=Matrix02.vx[i,y];[i,y,1]:=0;[i,y,2]:=(vx[i,y]+1)/2;;[i,y,3]:=0;

end;

//те, которые ниже будут синим

if (Matrix01.vx[i,y] > Matrix02.vx[i,y])(Matrix01.vx[i,y] <> 0)(Matrix02.vx[i,y] <> 0)then[i,y,1]:=(vx[i,y]+1)/6;[i,y,2]:=0;[i,y,3]:=0;;[i,y,1]:=cx[i,y,1];[i,y,2]:=cx[i,y,2];[i,y,3]:=cx[i,y,3];;;

end;

{

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

vx:Array of Array of Extended;//массив вершин:Array of Array of Array[1..3] of Extended;//массив нормалей:Array of Array of Array[1..3] of GLfloat;//массив цветов:Array of Array of Array[1..3] of GLfloat;//массив цветов

}:= true;;TMat.cb_SurfaceClick(Sender: TObject);(self.MCurrent^);;TMat.Button2Click(Sender: TObject);

//возможно, режим анализа поверхностейself.ComboBoxMatrix.ItemIndex = 2 thennot self.MakeAnalysMatrixData(self.myMatrix01, self.myMatrix02, self.myMatrix03) then

ShowMessage('Не удалось провести анализ поверхностей!');

end;.GL(self.MCurrent^);;;.Hide;.InitialDir:=ExtractFilePath(Application.ExeName);FoDialog.Execute thenself.LoadMatrixFromDtFile(FoDialog.FileName,self.MCurrent^) then.GL(self.MCurrent^);else //Yess=false.Hide;(Handle,PAnsiChar('Ошибка в файле данных!'+#13#10+self.mess),PAnsiChar('Ошибка'),MB_OK or MB_ICONINFORMATION);.Hide;

// w:=0;;;;TMat.ComboBoxMatrixChange(Sender: TObject);self.ComboBoxMatrix.ItemIndex = 0 then self.MCurrent:= @self.myMatrix01;self.ComboBoxMatrix.ItemIndex = 1 then self.MCurrent:= @self.myMatrix02;self.ComboBoxMatrix.ItemIndex = 2 then self.MCurrent:= @self.myMatrix03;.Button2.Caption:= 'Загрузить';self.ComboBoxMatrix.ItemIndex = 2 then self.Button2.Caption:= 'Провести анализ';.GL(self.MCurrent^);;;TMat.Edit3Change(Sender: TObject);_x:integer;_y:integer;:real;

begin

//изменение значения вершины

pos_x:= self.UpDown1.Position-1;_y:= self.UpDown2.Position-1;:= StrToFloatDef(self.Edit3.Text,-1000);value > -1000 then.MCurrent^.vx[pos_x,pos_y]:= value;

// else

// self.Edit3.Text:= FloatToStr(self.MCurrent^.vx[pos_x,pos_y]);

//теперь просчитываем цвета

With self.MCurrent^ do

begin[pos_x,pos_y,1]:=(vx[pos_x,pos_y]+1)/9;[pos_x,pos_y,2]:=1-vx[pos_x,pos_y+1]/9;[pos_x,pos_y,3]:=0;[pos_x,pos_y,1]:=(vx[pos_x,pos_y]+1)/9;[pos_x,pos_y,2]:=1-vx[pos_x,pos_y+1]/9;[pos_x,pos_y,3]:=0;;

//после изменений перерисовываем

self.GL(self.MCurrent^);

exit;;TMat.BitBtnSaveClick(Sender: TObject);:TStringList;:string;,y:integer;

//button "save" clickself.MCurrent^.w = 0 then('Матрица не загружена!');

exit;;self.SaveDialogMain.FileName = '' then.SaveDialogMain.InitialDir:= ExtractFileDir(ParamStr(0));not self.SaveDialogMain.Execute() then exit;

//---------------------------------------------:= TStringList.Create();self.MCurrent^ doy:= 0 to w-1 do:= '';k:= 0 to w-1 do:= stroka + ' ' + FloatToStr(vx[k,y]);;;:= trim(stroka);.Add(stroka);;;.SaveToFile(self.SaveDialogMain.FileName);.Free();

//---------------------------------------------('Матрица была сохранена.');;;.

);:TStringList;:string;,y:integer;

//button "save" clickself.MCurrent^.w = 0 then('Матрица не загружена!');

exit;;self.SaveDialogMain.FileName = '' then.SaveDialogMain.InitialDir:= ExtractFileDir(ParamStr(0));not self.SaveDialogMain.Execute() then exit;

//---------------------------------------------:= TStringList.Create();self.MCurrent^ doy:= 0 to w-1 do:= '';k:= 0 to w-1 do:= stroka + ' ' + FloatToStr(vx[k,y]);;;:= trim(stroka);.Add(stroka);;;.SaveToFile(self.SaveDialogMain.FileName);.Free();

//---------------------------------------------('Матрица была сохранена.');;;.

Перечень принятых сокращений

 

АРМ - автоматизированное рабочее место;

АСУ - автоматизированная система управления;

ВКО - воздушно-космическая оборона;

ИСР - интегрированная среда разработки;

КИТ - компьютерные информационные технологии;

КП - командный пункт;

КСА - комплекс средств автоматизации;

КСО - компьютерные средства обучения;

ЛБР - лицо (лица) боевого расчета;

ЛВС - локальная вычислительная сеть;

МСВС - мобильная система вооруженных сил;

НЖМД - накопитель на жестких магнитных дисках;

ОЗУ - оперативное запоминающее устройство;

ОС - операционная система;

ПС - программные средства;

ППП - пакет прикладных программ;

ПЭВМ - персональная электронно-вычислительная машина;

ПСПИ - программная система представления информации.


Введение

 

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

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

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

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

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

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

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

Дипломный проект состоит из введения, 3 разделов и заключения.

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

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

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

.  
Общесистемный раздел



Поделиться:


Последнее изменение этой страницы: 2020-03-02; просмотров: 198; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.221.113 (0.173 с.)