Реферат по предмету "Информатика, программирование"


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

Переченьпринятых сокращений
АРМ –автоматизированное рабочее место;
АСУ –автоматизированная система управления;
ВКО –воздушно-космическая оборона;
ИСР – интегрированнаясреда разработки;
КИТ –компьютерные информационные технологии;
КП –командный пункт;
КСА –комплекс средств автоматизации;
КСО –компьютерные средства обучения;
ЛБР – лицо(лица) боевого расчета;
ЛВС –локальная вычислительная сеть;
МСВС –мобильная система вооруженных сил;
НЖМД –накопитель на жестких магнитных дисках;
ОЗУ –оперативное запоминающее устройство;
ОС –операционная система;
ПС –программные средства;
ППП – пакетприкладных программ;
ПЭВМ –персональная электронно-вычислительная машина;
ПСПИ –программная система представления информации.

Введение
Успешноерешение боевых задач, стоящих в современных условиях перед воинскимиформированиями ВВС, во многом зависит не только от качества вооружения ивоенной техники и разработанных принципов и методов управления войсками, но иот оперативности и достоверности оценки поступающей информации.
Поступающаяинформация от различных источников (в большей степени от автоматизированныхсредств) представлена в цифровом виде, который необходимо перевести в болеенаглядный и информативный.
Анализ научныхтрудов и публикаций, посвященных поиску путей повышения эффективности восприятияи оперативной оценки поступающих данных, выявил в качестве одного из основныхнаправлений решения обозначенной выше проблемы – внедрение в процесс боевойподготовки и учебный процесс программных средств построения трехмерныхизображений данных из симметричных матричных форм.
В настоящеевремя существует малое количество ПСПИ. ПСПИ разрабатываются как в видеотдельных программных, так и в виде подсистем встроенных в системыпроектирования. Многие из них, по заявлениям разработчиков, являютсяуниверсальными, однако ряд факторов, прежде всего программно-технического и экономическогохарактера, не позволяют применить их для использования в ВВС. Возникаетнеобходимость поиска нового решения, что обуславливает актуальность настоящей работы.
Цель проекта:разработать программнуюсистему, обеспечивающую отображение и сравнение в трехмерном пространствеисходных данных из двух матричных форм.
Для достиженияцелевой установки в ходе работы решалась задача разработки ПС построения исравнения трехмерных изображений по данным из двух матричных форм,интегрирующей в себе требуемые возможности аналогов и обеспечивающей получениерешения за меньшее время при ограничениях на затраты.
В связи сэтим была создана программа, в основу которой была взята раннее разработаннаяаналогичная программа. В нее внесены дополнения в виде добавления функциизагрузки второй поверхности и функции сравнения поверхности образца споверхностью с измененным рельефом. Так же появилась возможность изменениязначений вершин матричной формы и сохранения этих изменений в текстовый файл.
Дипломный проект состоит из введения, 3 разделов изаключения.
В первомразделе проанализирован существующий подход к возможности отображения входнойинформации и определен путь повышения оперативности и достоверности. Проведенанализ возможности применения современных ПСПИ для вывода графическойинформации. Выделены их достоинства и недостатки. Определены факторы,препятствующих их применению. Выбран альтернативный вариант разработки.Определены требования, предъявляемые к ПСПИ, поставлена задача на их разработку.
Во второмразделе определены подходы к реализации функций ПСПИ, приведена их структура.Произведен выбор общего программного обеспечения и средств разработки.Разработана ПС построения трехмерного изображения из симметричных матричныхформ.
В третьемразделе освещены вопросы особенностей эксплуатации и порядка работы с ПСПИ,проведена оценка эксплуатационно-технических характеристик, рассчитана экономическаяэффективность.

1. Общесистемныйраздел
 
1.1 Анализсуществующего подхода к построению трехмерного изображения данных изсимметричных матричных форм и определение путей повышения уровня специализациина задаче
 
1.1.1 Анализсуществующего подхода к построению трехмерного изображения данных изсимметричных матричных форм
Поступающаяинформация от различных источников (в большей степени от автоматизированныхсредств) представлена в цифровом виде, который необходимо перевести в болеенаглядный и информативный.
Процедураоценки поступающей информации является одним из основных элементов боевойподготовки ЛБР. В настоящее время в специализированных учебных центрах ВВС и наКП бригад ВКО оценка поступающей информации осуществляется посредством выводовграфиков и таблиц.
Под выводомграфиков и таблиц понимается ручной или автоматизированный пересчет поступающейинформации для последующего вывода в удобочитаемом табличном виде либо в видеграфиков.
Данныйподход требует значительное усилие от ЛБР и затрату времени. Следовательно,данный процесс необходимо автоматизировать.
1.1.2 Определениепутей повышения достоверности оценки информации
Существующийв настоящее время подход к представлению цифровой информации в графическом видеи табличной форме обладает низкой достоверностью получаемых результатов. Этообусловлено сложностью оценки информации из табличного вида и ограниченностьюнаглядности плоскостных графиков.
Исходя изэтого, разработка и внедрение трехмерного представления информации, может выступитьв качестве пути повышения достоверности оценки информации.
 
1.2 Анализвозможности применения современных ПСПИ для оценки поступающей информации
В отличие оттрадиционных способов представления, трехмерное обладает рядом преимуществ,позволяющих:
а) значительно сократитьвремя, необходимое на обработку поступающей информации;
б) автоматизироватьпроцесс представления;
в) повыситьдостоверность результата анализа графического представления информации.
Данныепреимущества достигаются за счет применения трехмерного представления данных иреализации в различных программных средствах представления информации (ПСПИ).
Вместе стем, конкретных программных решений промышленного производства, официальноразрешенных для применения в настоящее время нет (тестирование проводитсябланковым способом). Однако эту задачу можно рассматривать как частный случайавтоматизированного представления данных, предполагающий использованиеспециализированных программных средств представления изображения (ПСПИ).
Исходя изэтого, необходимо рассмотреть существующие ПСПИ и проанализировать возможностиих применения.
На данныймомент существует небольшое количество ПСПИ, представленных как в видеподсистем в составе различных автоматизированных систем (АС), так и в видеавтономных решений. Практически все они сильно ограничены для представленияоперативной информации в силу следующих факторов:
а) функциональныйфактор – ограниченные возможности по реализации функции автоматизированного представленияданных;
б) программно-техническийфактор – закрытые исходные коды программных продуктов не допускающие ихвнедрение в состав автоматизированных систем военного назначения;
в) технологическийфактор – сложность в освоении и применении ПП;
г) экономическийфактор – высокая стоимость ПП.
Вопросамисоздания ПСПИ в настоящее время занимаются как различные учебные заведения,коммерческие организации, так и отдельные программисты. Учитывая экономическийфактор, для анализа существующих ПСПИ будем использовать толькосвободно-распространяемые (бесплатные или условно-бесплатные) решения. Попричине того, что признанных лидеров среди программ такого класса нет,рассмотрим наиболее распространенные и цитируемые из них:
а) 3DMax;
б) Graphs(Sulaco);
в) Viewer(Колташов О.В.);
г) Uni3D (Товпенец Д.И.).
Приведемкраткое описание функциональных возможностей и выделим достоинства и недостатки,присущие данным ПСПИ:
 3DMax
Программапредназначена для создания трехмерных объектов также возможно отображение повходным матрицам.
Достоинства:
а) простой ипонятный пользовательский интерфейс;
б) профессиональнаяпрограмма с богатым набором инструментов.
Недостатки:
а) функциональнаяограниченность работы с входными матрицами;
б) большие системныетребования;
в) закрытый кодпрограммы.
Graphs
Даннаяпрограмма является функционально-мощным средством автоматизированного представлениятрехмерного изображения, но имеет определенные недостатки.
Достоинства:
а) болееспециализированная на выводе из исходных матриц;
б) просмотр и печатьрезультатов тестирования.
В качественедостатка следует отметить существенные недоработки пользовательскогоинтерфейса, закрытый код.
Viewer
Данныйкомплекс более специализирован на математических формулах, но так же имеетсяфункция отображения из матриц.
Достоинства:
а) открытый кодпрограммы;
б) среда разработки Borland Delphi 7.0.
Недостатки:
а) длительнаяобработка данных;
б) большие системныетребования;
в) плохо продуманныйпользовательский интерфейс.
Uni3D
Программаобладает удобным пользовательским интерфейсом. Однако минимальнаяфункциональность и отсутствие контроля входных данных, не дают возможностьговорить о логической завершенности.
Достоинства:
удобныйинтерфейс в большинстве модулей комплекса.
Недостатки:
а) отсутствуетконтроль корректности входных данных;
б) возникаютпериодические сбои работы программы.
Сравнительнаяхарактеристика функциональных возможностей рассматриваемых ПСКТ представлена втаблице 1.1
Таблица 1.1 –Сравнительная характеристика функциональных возможностей программных средствкомпьютерного тестирования

п/п Функциональная возможность 3DMax Graphs Viewer Uni3D 1. специализированность на входных матрицах - - + + 2. открытый код - - + + 3. контроль входных данных + + + - 4. устойчивость к сбоям + + + - 5. удобный интерфейс + - - + 6. функциональность + - - + 7. большие системные требования + + - - 8. быстрая обработка данных + + - - 9. сравнительно низкая стоимость - - + +
Альтернативнымвариантом реализации ПСПИ может быть самостоятельная разработка сиспользованием одного из языков программирования высокого уровня,интегрированных средств разработки (ИСР) в сочетании с использованиемуниверсальных средств (текстовых редакторов, графических редакторов, редакторовэлектронных таблиц, редакторов презентаций, средств создания справочных систем).
 
1.3 Анализвозможных вариантов реализации ПС представления информации
В настоящеевремя ПСПИ реализуются с использованием двух основных подходов:
а) локальнаяархитектура;
б) клиент-сервернаяархитектура.
В данномпроекте использована локальная архитектура, которая предполагает размещениевсех компонентов (программных модулей) на одном компьютере. Такой подходприменяется в случае невозможности организовать локальную вычислительную сеть(ЛВС) и распределение автоматизированных рабочих мест (АРМ), а так же в случаеесли программа не требует использования дополнительных АРМ. В данном случаеэтот вариант применим для решения задачи оценки информации в процессе боевойподготовки, так же в ходе и подготовки к несению боевого дежурства.
Всоответствии с классификацией, определенной в ГОСТ 19.101-77 «Виды программ ипрограммных документов»:
а) программныйкомплекс – это программа, состоящая из двух или более компонентов и (или)комплексов, выполняющих взаимосвязанные функции и применяемая самостоятельноили в составе другого комплекса;
б) программныйкомпонент – это программа, рассматриваемая какединое целое, выполняющая законченную функцию и применяемая самостоятельно илив составе комплекса.
ПСПИ,разрабатываемая в настоящем проекте, состоит из одного компонента и,следовательно, является программным компонентом, применяемым самостоятельнолибо в составе различных сред.
1.4 Определениетребований к ПС представления информации
 
1.4.1 Функциональныетребования
Исходя из целей,стоящих перед ПСПИ и задач, решаемых пользователями при работе с ними,основными процессами, подлежащими автоматизации, являются:
а) процесс обработкивходной информации;
б) процессвзаимодействия пользователей с графической информацией.
Указанные процессыотносятся к основным. Для их автоматизации в составе ПСПИ должен бытьреализован следующий набор функций:
а) входной контрольданных;
б) настройкапараметров представления.
Функцияконтроля входных данных предполагает:
а) проверка насоответствие входной информации с поставленными ограничениями;
б) остановкавыполнения программы с вызовом сообщения об ошибке.
Проверка насоответствие входной информации с поставленными ограничениями предполагаетсравнение поступающей информации с эталонными значениями входных данных.
В случаенесоответствия входной информации поставленным ограничениям программаостанавливает свое выполнение с вызовом сообщения об ошибке и ожидает загрузкикорректных данных.
Функцияперевода табличных данных в графический вид.
Данная функцияосуществляет построение трехмерного изображения по данным входной симметричнойматричной формы.
Функциясравнения графических изображений
Даннаяфункция осуществляет сравнение формы образца с измененной матричной формой.
Функции,автоматизирующие процесс взаимодействия пользователей с графическойинформацией.
Взаимодействиепользователей с графической информацией обеспечивают функции:
а) настройкапредставления графической информации;
б) вращениетрехмерного изображения;
в) определениезначения точки на поверхности изображения.
Функциянастройки представления графической информации выполняет следующие действия:
а) выбор текстурыповерхности изображения;
б) выбор масштабапредставления.
Функциявращения трехмерного изображения позволяет вращать изображение в пространствепод любым углом и всесторонне воспринимать информацию.
Функцияопределения значения точки на поверхности изображения обеспечивает выдачуконкретного значения по выбранному элементу изображения.
1.4.2 Требованияк входной и выходной информации
На основеанализа функциональных требований предъявляемых к ПСПИ можно определить для нихперечень входной и выходной информации.
Входнойинформацией для ПС представления информации является симметричная матричнаяформа.
Выходнойинформацией для ПС представления информации является:
а) трехмерноепредставление входных данных;
б) трехмерноеотображение результата сравнения;
в) цифровое значениеотдельных областей изображения.
1.4.3 Эргономическиетребования
Дляобеспечения комфортной работы пользователей с ПСПИ она должна соответствоватьтребованиям ГОСТ РВ 29.05.ХХХ – «Система стандартов эргономических требований иэргономического обеспечения. Общие эргономические требования».
1.4.4 Техническиетребования
Технические и программные средства, предназначенные для обеспеченияфункционирования разработанного комплекса ПО должны с одной стороныобеспечивать комфортную работу с программой и обеспечивать защиту,циркулирующей информации от несанкционированного доступа, а с другой –удовлетворять требованиям общего и специального программного обеспечения призаданной конфигурации вычислительных средств. Кроме того, техническиетребования и программные средства, предназначенные для функционирования ПС должныудовлетворять аппаратным и программным характеристикам вычислительных средствиспользуемых в процессе боевой подготовки ЛБР и учебном процессе специализированныхучебных центров.
Рекомендуемые технические характеристики ПЭВМ для функционирования ПС оценки уровня обученности ЛБР приведены втаблице 1.2.
Таблица 1.2 – Техническиехарактеристики ПЭВМ

Параметры технических средств Значения параметров Процессор Intel Pentium II – 1600 МГц ОЗУ не менее 256 Мб НЖМД не менее 40 Гб Разрешение монитора 1024*768
Кроме того, ПЭВМ должна быть оснащенаклавиатурой, манипуляторомтипа «мышь» (или трекбол).
Дляобеспечения функционирования ПС представления информации на ПЭВМ должны бытьустановлены ОС WindowsNT, XP, Vista и пакет MS Office 2000 и выше.
 
1.4.5 Требованияк документации
Документацияна ПСПИ должна быть разработана в соответствии с требованиями приказа ГК ВВС2000г. №029 «О введении в действие руководства по разработке программнойпродукции военного назначения в ВВС» и требованиями ГОСТ ЕСПД.
Документацияна ПСПИ должна включать четыре документа:
а) постановказадачи;
б) алгоритм функционированиякомплекса;
в) описаниепрограммы комплекса;
г) инструкцияпользователю комплекса.
1.5 Постановказадачи на разработку ПС представления информации
Такимобразом, в рамках дипломного проекта должны быть разработаны алгоритм и программныесредства представления информации, отвечающие сформулированным выше требованиям:
Постановказадачи на создание ПСПИ разработана в соответствии с требованиями приказа ГКВВС №029-2000г. и ГОСТ 19.201-78 и представлена в первом разделе документациина программную систему.
1.6 Ограниченияи допущения, принятые при разработке ПСПИ
а) одновременно с программнымобеспечением может работать только один пользователь;
б) для работы с ПС,пользователи должны владеть основными навыками работы с операционными системамисемейства Microsoft Windows, а также с ППП Microsoft Office;
в) требования ктехническим средствам приведены в пункте 1.4.4

2. Специальныйраздел
 
2.1 Определениеподходов к реализации функций ПС представления информации
Из описанныхвыше процессов, подлежащих автоматизации, ключевой момент составляют процессы обработкивходной информации и процессы взаимодействия пользователей с графическойинформацией. Определим подходы к реализации функций, автоматизирующих их.
 
2.1.1 Функции,автоматизирующие процесс обработки входной информации
Дляавтоматизации процесса обработки входной информации в составе ПС представленияинформации должны быть реализованы функции:
а) контроль входныхданных;
б) перевод табличныхданных в графический вид.
Функция контролявходных данных предполагает:
а) проверка насоответствие входной информации с поставленными ограничениями;
б) остановкавыполнения программы с вызовом сообщения об ошибке.
Проверка насоответствие входной информации с поставленными ограничениями предполагаетсравнение поступающей информации с эталонными значениями входных данных.
В случаенесоответствия входной информации поставленным ограничениям программаостанавливает свое выполнение с вызовом сообщения об ошибке и ожидает загрузкикорректных данных.
Функция переводатабличных данных в графический вид — осуществляет построение трехмерногоизображения по данным входной симметричной матричной формы.

2.1.2Функции, автоматизирующие процесс взаимодействия пользователей с графической информацией
Взаимодействиепользователей с графической информацией обеспечивают функции:
а) сравнениетрехмерных изображений;
б) настройкапредставления графической информации;
в) вращениетрехмерного изображения;
г) определениезначения точки на поверхности изображения.
Функциясравнения трехмерных изображений позволяет проанализировать разницу, четковыраженную несколькими цветами.
Функция настройкипредставления графической информации выполняет следующие действия:
а) выбор текстурыповерхности изображения;
б) выбор масштабапредставления.
Функция вращениятрехмерного изображения позволяет вращать изображение в пространстве под любымуглом и всесторонне воспринимать информацию.
Функция определениязначения точки на поверхности изображения обеспечивает выдачу конкретногозначения по выбранному элементу изображения.
2.2 СтруктураПС представления информации
Исходя иззадач, решаемых с помощью ПС представления информации, выполняемых ими функции и способовреализации этих функций, определим их структуру. Структура отражает составосновных программных и информационных компонентов, а также их связи друг сдругом, пользователями и внешними программами. Вычленение программныхкомпонентов производится по функциональному принципу. Информационные компоненты(массивы, блоки, файлы, фрагменты базы данных и т.д.) выделяются на основанииих назначения, использования, форматов представления данных, способов доступа идругих признаков.
Структурнаясхема разработанных программных средств приведена на рисунке 2.1
/>
Рисунок 2.1 – Структурная схема
Основнымиструктурными элементами ПС являются:
а) внешний источникданных – обеспечивает импорт входных данных;
б) программныймодуль представления информации, который включает:
1) блок контроля изагрузки входных данных – предназначен для анализа поступающей информации ипоследующему импорту в программу;
2) блок переводатабличных данных в графический вид – предназначен для визуализации цифровыхматричных форм;
3) блок сравнениядвух матричных форм – предназначен для наложения на изображение — образец новогоизображения и последующего анализа полученного результата;
4) блок настройкипараметров представления информации – предназначен для установки параметров выводимоготрехмерного изображения;
5) блок управлениятрехмерным изображением – предназначен для проведения различных действий стрехмерным изображением;
6) блок выбораопределенного значения на поверхности трехмерного изображения – предназначендля уточнения значений отдельных элементов.
2.3 АлгоритмПС представления информации
Описаниеуказанных алгоритмов разработано в соответствии с требованиями ГОСТ 24.211-82«Требования к содержанию документа» и «Описание алгоритма» приведено во второйчасти документации на задачу.
Условныеграфические обозначения в схемах алгоритмов выполнены в соответствии стребованиями ГОСТ 19.701-90 ЕСПД. «Схемы алгоритмов, программ, данных и систем.Условные обозначения и правила выполнения в соответствии с ним».
2.4 Выбор общего программногообеспечения и средств разработки
В настоящий момент основным языкомпрограммирования при разработке программных средств военного назначенияявляется С++. Однако несмотря на ряд преимуществ, присущих данному языку,он является достаточно сложным. В связи с этим, возникла необходимость выборасредства разработки, позволяющего в короткие сроки и максимально эффективновыполнить поставленную задачу. По результатам обзора современных средствбыстрой разработки программного обеспечения (RAD), былсделан вывод, что в качестве такового может выступить интегрированная средапрограммирования Borland Delphi 7.0. Основанная на синтаксисе мощного и гибкого языкапрограммирования Object Pascal и сочетающая в себе широкий набор функциональныхвозможностей данная ИСР предоставляет пользователю широкие возможности поразработке ПО.
В вооруженных силах Российской Федерации в интересах созданиясобственных средств общего программного обеспечения, в том числе и ОС, приказомМинистра Обороны от 13 мая 2002 года № 190 принята на снабжение защищеннаяоперационная система МСВС 3.0. Однако отсутствие подробного описанияособенностей данной системы и необходимость использования ряда пакетов прикладныхпрограмм, разработанных в среде Windows, вызываетопределенные затруднения при разработке ПО под данную ОС. Кроме того, на ПЭВМ,применяемых на КП бригад ВКО, установлены операционные системы семействаWindows. В связи с этим был сделан вывод о целесообразности разработкипрограммы на основе операционной системы Microsoft Windows XP.
Исходя из вышеприведенных соображений, в качестве средства разработкиПСПИ, в рамках настоящего дипломногопроекта, была определена ИСР Borland Delphi 7.0.
2.5 Исходныйтекст программы
Исходныйтекст программы разработан в соответствии с требованиями ГОСТ 19.401-78 ипредставлен в приложении 2.

3. Эксплуатационный раздел
 
3.1 Оценкаэксплуатационно-технических характеристик
Анализрезультатов оценки эксплуатационно-технических характеристик разработанной ПС построениятрехмерного изображения данных из симметричных матричных форм показал, что ониявляются законченными программными продуктами высокого качества. Функциональныехарактеристики ПС соответствуют предъявляемым к ним требованиям.
ИспытанияПС выявили полное соответствие его характеристик следующим стандартам:
а) ГОСТ-28195-95“Оценка качества программных средств. Общие положения”;
б) ГОСТ Р ИСО/МЭК9126-93 “Информационные технологии. Оценка программной продукции. Характеристикикачества и руководства по их применению”.
3.2 Оценканадежности и качества ПСПИ
Качестволюбого изделия представляется набором показателей, отражающих его свойства иопределяющих возможность и эффективность его применения по прямому назначению.Качество программных средств описывается совокупностью показателей-критериев,для каждого из которых должны быть определены метрики и методы их измерения.Эти критерии и метрики программ позволяют описывать их свойства как конечногопродукта независимо от способа их достижения.
Имеется рядстандартов и публикаций, определяющих основные понятия, номенклатуру критериев,методы измерения показателей и метрики качества программ. Основными стандартамив области оценки качества программных средств являются:
а) ISO 9126:1991;
б) ГОСТ 28190-89;
в) ГОСТ 28806-90.
В стандартахописываются до 20 – 30 показателей – основных критериев и приводятсяопределения их вычисления. Однако многие показатели имеют иллюстративныйхарактер, и их значения определяются экспертно. В зависимости от класса иособенностей программы целесообразно выбирать различные наборы критериев,адекватные свойствам конкретного ПС.
Эти критериидолжны наиболее полно отражать назначение и функциональные характеристики ПСпри его применении, и их обычно не более десяти.
Средипоказателей качества можно выделить две крупные группы и соответствующие имнаборы критериев:
а) функциональныекритерии (функциональная пригодность и удобство использования), отражающиеспецифику областей применения и степень соответствия программ их основномуцелевому назначению;
б) конструктивныекритерии (надежность и эффективность использования ресурсов), отражающиеэффективность использования программой ресурсов вычислительных средств (ВС), атакже надежность функционирования программного обеспечения.
3.2.1 Оценкафункциональной пригодности
Оценкафункциональной пригодности включает в себя оценку:
а) функциональнойкорректности (корректность структуры, корректность выполнения функций,корректность взаимодействия компонент);
б) способности квзаимодействию;
в) мобильности.
Анализисходного кода программы показал, что он имеет корректную структуру. Опытнаяэксплуатация ПСПИ показала, они выполняют все функции, определенные впостановке задачи в соответствии с предъявляемыми для них требованиями.
Исходный кодпрограммы требует минимального объема изменений, при дополнении или исключенииотдельных функции. Следовательно, программные и информационные компонентыспособны к взаимодействию.
Опытнаяэксплуатация проводилась на различных версиях ОС Windows и не требовала припереносе никаких дополнительных доработок программы. Этот факт свидетельствует омобильности разработанной программы.
Изсказанного выше можно сделать вывод, что программа является функциональнопригодной.
3.2.2 Оценкаудобства использования
Удобствоиспользования программных средств определяется по показателям понятности,обучаемости и комфортности эксплуатации.
РазработаннаяПСПИ имеет четкую концепцию, обладает широкими демонстрационными возможностямии наглядностью представления возможных функций.
Подготовкапользователей к полноценной эксплуатации ПСПИ требует минимальных затратвремени.
Это обеспечиваетсяза счет:
а) доступности иудобства использования руководств и инструкций по эксплуатации;
б) интуитивно понятногоинтерфейса.
РазработаннаяПС является достаточно легкой в управлении. Некоторые параметры управленияреализуются автоматически. Сообщения, выдаваемые пользователю в процессеработы, являются достаточно информативными. Выполнение всех функций предусмотренныхПС и регистрация результатов происходит практически мгновенно. Эргономическиехарактеристики интерфейса соответствуют требованиям ГОСТ и обеспечиваюткомфортную работу пользователей.
Изсказанного выше следует, что разработанные ПС представления информации являетсяудобной в использовании.
3.2.3 Оценканадежности
Всоответствии с ГОСТ 13.377-75, надежность – свойства объекта выполнять заданныефункции, сохраняя во времени значения установленных эксплуатационныхпоказателей в заданных пределах, соответствующих заданным режимам и условиямиспользования, технического обслуживания, ремонта, хранения итранспортирования.
НадежностьПС – уровень, при котором программа удовлетворяет поставленным требованиям ипригодна для эксплуатации. Основными показателями надежности ПС являютсяустойчивость, восстанавливаемость.
Опытнаяэксплуатация ПСПИ показала её способность к безотказному функционированию послевозникновения каких-либо сбоев. После перезапуска – рестарта функционированиевосстанавливается полностью.
Этопозволяет сделать заключение о надежности разработанной ПС представленияинформации.
3.2.4 Оценкаэффективности использования ресурсов
Эффективностьиспользования ресурсов определяется по следующим показателям:
а) временнаяэкономичность (время реакции, пропускная способность);
б) ресурснаяэкономичность (занятость, используемость ресурсов).
Выполнениефункций предусмотренных в ПСПИ и реакция на запросы пользователя осуществляетсяпрактически мгновенно. ПС обладают высокой пропускной способностью.
ФункционированиеПСПИ сопровождается минимальной загрузкой ресурсов ПЭВМ (центральногопроцессора, оперативной, внешней и виртуальной памяти, каналов ввода-вывода).Таким образом, система эффективно использует ресурсы в процессе функционирования.
3.2.5 Расчетобобщенного показателя качества ПО
Обобщенныйпоказатель качества ПО[1]) (Пок) оцениваетсясуммой показателей, входящих в него и определяется по формуле:
Пок=0,25ПЗ + 0,05Пэф + 0,15Пдок + 0,2Пн + 0,05Писп +0,1Пэкспл + 0,15Пм + 0,05Пи, (3.1)
где:
Пз – показатель соответствия заданию на дипломныйпроект;
Пэф – показатель эффективности;
Пдок – показатель документированности;
Пн – показатель надежности;
Писп – показатель простоты использования;
Пэкспл – показатель удобства эксплуатации;
Пм – показатель мобильности;
Пи – показатель испытуемости.
Применительнок разработанным программным средствам оценки уровня обученности ЛБР Поксоставляет:
/>

Такимобразом, исходя из сформулированных выше выводов и на основе полученногозначения обобщенного показателя, можно сделать вывод о том, что разработанные врамках дипломного проекта ПС являются качественными.
3.3 Оценкаэкономической эффективности разработанных ПС представления информации
Оценкаэкономической эффективности разработанной ПСПИ проводится для анализа иобоснования целесообразности их внедрения в специализированные учебные центры ивоинские части.
Источниками экономическойэффективности ПС является сокращение затрат и повышение эффективности процесса оценкипоступающей информации.
Факторами экономической эффективностиПС являются средства реализации источников эффективности. К ним относятосновные функции, выполняемые ПС.
Различаютдве группы методов оценки проектов, связанных с применением компьютерных информационныхтехнологий:
а) простые(статические) методы;
б) методыдисконтирования.
В рамкахнастоящей работы рассматриваются простые методы оценки экономическойэффективности применительно к решению задачи оперативной оценки информации сиспользованием ПСПИ.
Данныеметоды базируются на допущении равной значимости доходов и расходов вфинансовой деятельности и не учитывают временной стоимости денег.
К даннымметодам относятся расчеты следующих показателей:
а) годовогоэкономического эффекта Эг – основного показателя, представляющего собой всюприбыль, получаемую в результате автоматизации решения задачи.
б) годовой экономииЭ – части прибыли, получаемой от снижения себестоимости документов приавтоматизации процесса их разработки;
в) расчетногокоэффициента эффективности капиталовложений Ер – прибыли, получаемой на одинрубль, вложенный в приобретение ВТ для решения рассматриваемой задачи;
г) срока окупаемостикапиталовложений Ток – временного периода за который окупятся затраты,связанные с приобретением ВТ для решения рассматриваемой задачи.
3.4 Расчетгодового экономического эффекта
Годовойэкономический эффект Эг определяется как разница затрат между базовым и оцениваемымвариантами решения задачи.
Под базовымвариантом будем понимать оценку оперативной информации традиционным способом.
Подоцениваемым вариантом будем понимать затраты, связанные с автоматизацией даннойзадачи.
Годовойэкономический эффект рассчитывается по формуле:
Эг=Зб-Зоц (3.2)
где:
Зб – затратыпо базовому варианту;
Зоц –затраты по оцениваемому варианту.
В общемслучае затраты складываются из следующих компонентов:
Зрб –затраты ручного труда, связанные с работой ЛБР по оценке поступающих данных сиспользованием традиционного подхода;
Зр оц –затраты, связанные с частичным использованием традиционного подхода приавтоматизированном решении задачи;
Зтек оц –текущие затраты, связанные с эксплуатацией задачи на ЭВМ, которые связаны срешением задачи на ВТ (заработная плата должностных лиц, обслуживающихкомпьютеры, электроэнергия, амортизация);
Зк оц –затраты на приобретение компьютерной техники, покупка программных продуктов дляавтоматизации задачи и обучение сотрудников.
С учетомвышеизложенного, формула для расчета годового экономического эффектаприобретает вид:
/> (3.3)
Здесь:
/> (3.4)
где:
Тр –трудоемкость одноразового решения задачи вручную;
кр –периодичность решения задачи в течение года;
tr – среднечасовая тарифная ставкадолжностного лица;
n – коэффициент, учитывающий премии идоклады;
R – коэффициент отчисления от фондаоплаты труда;
Ен –нормативный коэффициент эффективности капитальных затрат, принимается равным0.15.
Тр=0.32 ч; кр= 500 опер.; tr = 107 руб.; n = 1,4; R=1,36.
/>
/> (3.5)

где:
Титр –трудоемкость одноразового решения задачи автоматизировано.
/> 
/> (3.6)
где:
Тпр –продолжительность разработки программы в мес;
кл –количество человек, участвующих в разработке;
Fм – месячный фонд времени работы;
tr – среднечасовая тарифная ставкаразработчика.
Тпр=1 мес.;кл = 1 чел.; Fм = 80 час. (при норм. усл.); tr = 100 руб.;
/> 
/> (3.7)
где:
Тм – времямашинной реализации задачи;
Сэвм –стоимость ЭВМ, программных продуктов и обучения
должностныхлиц;
Fэвм – действительный фонд времени ЭВМв течение года.
Тм=0.015час; Сэвм=15000 руб.; Fэвм=2880час;
Зк оц=(0.015500 15000)/2880 ≈ 39 руб.
/> (3.8)
где:
Зитр –заработная плата должностных лиц, обслуживающих
ЭВМ;
А –амортизация (A=0.12 Сэвм=1800 руб.);
Зэл –затраты на электроэнергию.
/> (3.9)
где:
Fгод – годовой фонд заработной платыдолжностных лиц, обслуживающих ЭВМ;
Зитр=(216000/2880)0.015 500 1.4 1.36 =1071 руб.
/> (3.10)
где:
Кис –коэффициент использования энергоустановок по
мощности;
СУМэвм –суммарная установленная мощность ЭВМ;
Цэл –стоимость одного кВт/ч энергии.
Кис=0.9;СУМэвм=100; Цэл=2.5 руб;
Зэл=0.9 100 0.015500 2.5=1688 руб;
Зтек оц=1071+1800+1688=4559руб;
Основнымизатратами по автоматизации будут:
а) обучениедолжностных лиц обеспечивающих работу ЭВМ;
б) обслуживаниекомпьютерной техники.
Затраты побазовому варианту:
Зрб=32600руб.;
Затраты пооцениваемому варианту:
Зр оц = 1530руб.
Зтек оц=4559руб.;
Зк оц=39руб.
Зпр оц =15232руб.
Тогдагодовой экономический эффект будет:
Эг=(Зрб-Зр оц-Зтекоц)-Ен (Зк оц+Зпр оц)=(32600-1530-4559)-0.15 (39+15232)=26511-2291=24220 руб.
Расчетгодовой экономии.
/> (3.11)
Расчетрасчетного коэффициента эффективности капиталовложений.
/> (3.12)
ВнедрениеКИТ является эффективным если Ер>Ен, т. е. расчетный коэффициентэффективности больше нормативного.
Расчет срокаокупаемости капиталовложений.
/> (3.13)
Такимобразом, на основании результатов проведенной оценки можно сделать вывод, чтовнедрение разработанной в рамках дипломного проекта ПС представления информациив специализированные учебные центры и воинские части является экономическиэффективным.

3.4 Рекомендациипо обеспечению безопасной жизнедеятельности при работе с ПСПИ
Эксплуатацияразработанной ПСПИ предполагается на ПЭВМ, которая является источником вредныхфакторов, негативно влияющих на безопасность жизнедеятельности пользователей.Для снижения воздействия этих факторов при организации эксплуатации системынеобходимо руководствоваться описанными ниже рекомендациями.
3.4.1Рекомендации по обеспечению электробезопасности
Источникомпитающего напряжения ПЭВМ должна быть сеть переменного тока с напряжением 220В, на которую распространяется ГОСТ 25861-83.
Дляпредупреждения поражений электрическим током необходимо:
а) чётко и в полномобъёме выполнять правила производства работ и правила технической эксплуатации;
б) исключитьвозможность доступа оператора к частям оборудования, работающим под опаснымнапряжением, неизолированным частям, предназначенным для работы при маломнапряжении и не подключенным к защитному заземлению;
в) применятьизоляцию, служащую для защиты от поражения электрическим током, выполненную сприменением прочного сплошного или многослойного изоляционного материала,толщина которого обусловлена типом обеспечиваемой защиты;
г) подводитьэлектропитание к ПЭВМ от розетки здания при помощи специальной вилки сзаземляющим контактом;
д) защитить отперегрузок по току, рассчитывая на мощность, потребляемую от сети; а такжезащитить от короткого замыкания оборудование, встроенное в сеть здания;
е) надёжноподключить к заземляющим зажимам металлические части, доступные для оператора,которые в результате повреждения изоляции могут оказаться под опасным напряжением;
ж) проверить, чтозащитный заземляющий проводник не имеет выключателей и предохранителей инадёжно изолирован.
3.4.2 Рекомендациипо обеспечению пожарной безопасности
Пожарнаябезопасность помещений, имеющих электрические сети, регламентируется ГОСТ12.1.033-81, ГОСТ 12.1.004-85. Работа оператора ЭВМ должна вестись в помещении,соответствующем категории Д. Огнестойкость здания должна соответствовать СНиП2.01.02-85 .
Вконструкции дисплеев должны использоваться специальные разъемы, уменьшающиепереходное сопротивление, и, соответственно, нагрев. ЭВМ нельзя располагатьвблизи источников тепла или термоизлучателей, на экраны дисплеев не должныпадать прямые солнечные лучи. Устанавливать ЭВМ необходимо так, чтобы задняя ибоковые стенки отстояли не менее чем на 0.2 м от других предметов. Для соблюдения теплового режима в корпусе ЭВМ должны быть предусмотрены вентиляционныеотверстия и охлаждающий вентилятор. Внутренний монтаж должен быть выполненпроводом с повышенной теплостойкостью.
Пожарнаябезопасность объекта должна обеспечиваться:
а) системойпредотвращения пожара;
б) системойпротивопожарной защиты;
в) организационно-техническимимероприятиями.
Предотвращениепожара в помещении может быть достигнуто минимальным количеством предметов изгорючих материалов, их безопасным расположением, а также отсутствиемлегковоспламеняющихся материалов.
Противопожарнаязащита помещения может быть обеспечена применением автоматической установкипожарной сигнализации, наличием средств пожаротушения, применением основныхстроительных конструкций здания с регламентированными пределами огнестойкости.
Организационно-техническиемероприятия должны включать организацию обучения служащих правилам пожарнойбезопасности.
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:Arrayof Array of Extended;//массив вершин
nx:Arrayof Array of Array[1..3] of Extended;//массив нормалей
cx:Arrayof Array of Array[1..3] of GLfloat;//массив цветов
cc:Arrayof 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;
procedureCalcNormals(x1,y1,z1,x2,y2,z2,x3,y3,z3:Extended; var nx,ny,nz:Extended);
procedureGL(var Matrix:TMatrix); //прорисовка матрицы на экран
procedureInit();
procedureSelPos(var Matrix:TMatrix; xx:Integer;yy:Integer);
procedureFormCreate(Sender: TObject);
procedureFormDestroy(Sender: TObject);
//---------------------------------
functionLoadMatrixFromBitmap(filename:string; var Matrix:TMatrix):boolean;
functionLoadMatrixFromDtFile(filename:string; var Matrix:TMatrix):boolean;
functionMakeAnalysMatrixData(Matrix01,Matrix02:TMatrix; var Matrix03:TMatrix):boolean;
//---------------------------------
procedurebmp1Click(Sender: TObject);
procedurePanel4MouseDown(Sender: TObject; Button: TMouseButton;
Shift:TShiftState; X, Y: Integer);
procedurePanel4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y:Integer);
procedurePanel4MouseUp(Sender: TObject; Button: TMouseButton;
Shift:TShiftState; X, Y: Integer);
procedureEdit1KeyPress(Sender: TObject; var Key: Char);
procedureEdit1Change(Sender: TObject);
procedureEdit2KeyPress(Sender: TObject; var Key: Char);
procedureEdit2Change(Sender: TObject);
procedureButton1Click(Sender: TObject);
procedureButton2Click(Sender: TObject);
procedureButton3Click(Sender: TObject);
procedureButton4Click(Sender: TObject);
procedurecb_SurfaceClick(Sender: TObject);
procedureComboBoxMatrixChange(Sender: TObject);
procedureEdit3Change(Sender: TObject);
procedureBitBtnSaveClick(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;
procedureInitOpenGL;
procedureSetDCPixelFormat(DC:HDC);
end;
var
yess:Boolean;
Mat:TMat;
MouseButton: Integer;
Xcoord,Ycoord, Zcoord: Integer;
YRot,XRot: integer;
Depth: integer;
LastCCX,LastCCY: Integer;
//-----------------------------------------------------------------------------
implementation
//-----------------------------------------------------------------------------
usesUAbout;
{$R*.dfm}
procedureTMat.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;
procedureTMat.SetDCPixelFormat(DC:HDC);
var
pfd:TPixelFormatDescriptor;
nPixelFormat:Integer;
begin
FillChar(pfd,SizeOf(pfd),0);
pfd.dwFlags:=PFD_DOUBLEBUFFERor
PFD_DRAW_TO_WINDOWor
PFD_SUPPORT_OPENGL;
nPixelFormat:=ChoosePixelFormat(DC,@pfd);
SetPixelFormat(DC,nPixelFormat,@pfd);
end;
procedureTMat.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;
procedureTMat.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;
procedureTMat.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.wdiv 2;
dv:=25div 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_BITor 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
Ifcb_Surface.Checked then av:=2 else av:=1;
caseav of
1: begin
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
glColor3f(1,1,1);
glBegin(GL_LINES);
forj:=0 to Matrix.w-2 do
fork:=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;
forj:=0 to Matrix.w-2 do
fork:=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);
forj:=0 to Matrix.w-2 do
fork:=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;
forj:=0 to Matrix.w-2 do
fork:=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_OKor 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;
procedureTMat.SelPos(var Matrix:TMatrix; xx:Integer;yy:Integer);
var
fx:Integer;
s:string;
begin
if(Matrix.w>0) then
begin
forfx := 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]
//Edit3.Text:=FloatToStr(Round(Matrix.vx[LastCCx,LastCCy]*100)/100);
Edit3.Text := s;
end; трехмерныйизображение матричный графический
end;
//-----------------------------------------------------------------------------
functionTMat.LoadMatrixFromBitmap(filename:string; var Matrix:TMatrix):boolean;
var
i,j:Integer;
ss: string;
begin
Result:= false;
ifnot FileExists(filename) then exit;
withMatrix do
begin
bmp.Width:=0;
bmp.Height:=0;
bmp.LoadFromFile(OpenPictureDialog1.FileName);
w:=bmp.Width;
UpDown1.Max:=w;
UpDown2.Max:=w;
LastCCX:=wdiv 2;
LastCCY:=wdiv 2;
SetLength(vx,w);
SetLength(nx,w);
SetLength(cx,w);
SetLength(cc,w);
fori:=0 to w-1 do
begin
SetLength(vx[i],w);
SetLength(nx[i],w);
SetLength(cx[i],w);
SetLength(cc[i],w);
end;
ss:='';
ListBox1.Items.Clear;
fori:=0 to w-1 do
begin
forj:=0 to w-1 do
begin
vx[i,j]:=(GetRValue(bmp.Canvas.Pixels[i,j])+
GetGValue(bmp.Canvas.Pixels[i,j])+
GetBValue(bmp.Canvas.Pixels[i,j]))/50;
ifvx[i,j]>10 then vx[i,j]:=9+(random(99)+1)/100;
ss:=ss+FormatFloat('0.00',vx[i,j])+' ';
cx[i,j,1]:=GetRValue(bmp.Canvas.Pixels[i,j])/255;
cx[i,j,2]:=GetGValue(bmp.Canvas.Pixels[i,j])/255;
cx[i,j,3]:=GetBValue(bmp.Canvas.Pixels[i,j])/255;
cc[i,j,1]:=GetRValue(bmp.Canvas.Pixels[i,j])/255;
cc[i,j,2]:=GetGValue(bmp.Canvas.Pixels[i,j])/255;
cc[i,j,3]:=GetBValue(bmp.Canvas.Pixels[i,j])/255;
end;
ListBox1.Items.Add(ss);
ss:='';
end;
Zcoord:=w*2;
SelPos(Matrix,LastCCX, LastCCY);
UpDown1.Position:=LastCCX;
UpDown2.Position:=LastCCY;
end;
Result:= true;
end;
functionTMat.LoadMatrixFromDtFile(filename:string; var Matrix:TMatrix):boolean;
var
i,x,y,j,k,posp,posbar:Integer;
spr,sfl,ss,formfl:String;
Fres: TFloatRec;
Conv: Extended ;
coint:integer;
ValStr:Extended;
begin
Result:= false;
ifnot FileExists(filename) then exit;
withMatrix do
begin
LBData.Items.Clear;
bar.Position:=0;
progress.Visible:=True;
progress.Update;
LBData.Items.LoadFromFile(FileName);
ifLBData.Items.Count>5 then
begin
bar.Position:=5;
bar.Update;
w:=LBData.Items.Count;
UpDown1.Max:=w;
UpDown2.Max:=w;
LastCCX:=wdiv 2;
LastCCY:=wdiv 2;
SetLength(vx,w);
SetLength(nx,w);
SetLength(cx,w);
SetLength(cc,w);
fori:=0 to w-1 do
begin
SetLength(vx[i],w);
SetLength(nx[i],w);
SetLength(cx[i],w);
SetLength(cc[i],w);
fory :=0 to w-1 do
begin
vx[i,y]:=0;
nx[i,y,1]:=0;
nx[i,y,2]:=0;
nx[i,y,3]:=0;
cx[i,y,1]:=0;
cx[i,y,2]:=0;
cx[i,y,3]:=0;
cc[i,y,1]:=0;
cc[i,y,2]:=0;
cc[i,y,3]:=0;
end;
end;
yess:=True;
mess:='';
fory :=0 to w-1 do
begin
spr:=LBData.Items[y];
x:=0;
while(((pos(' ',spr)>0) or (Length(spr)>0)) and (Yess=True) and (x
begin
posp:=pos('',spr);
If(posp>0) then
begin
sfl:=trim(copy(spr,0,posp));
delete(spr,1,posp);
ValStr:=strtofloatdef(sfl,-100);
If(ValStr=-100) then
begin
yess:=False;
if(Length(mess)=0) then mess:='Неверное значение'+#13#10+'строка '+IntToStr(y+1)+#13#10+'позиция '+IntToStr(x+1)+#13#10+'['+sfl+']';
break;
end;
If((ValStr10)) then
begin
yess:=False;
if(Length(mess)=0) then mess:='Значение >10, либо
break;
endelse vx[x,y]:=ValStr;
endelse
begin
spr:=Trim(spr);
ValStr:=strtofloatdef(spr,-100);
If(ValStr=-100) then
begin
yess:=False;
if(Length(mess)=0) then mess:='Неверное значение'+#13#10+'строка '+IntToStr(y+1)+#13#10+'позиция '+IntToStr(x+1)+#13#10+'['+spr+']';
break;
end;
If((ValStr10)) then
begin
yess:=False;
if(Length(mess)=0) then mess:='Значение >10, либо
break;
endelse vx[x,y]:=ValStr;
spr:='';
end;
inc(x);
end;
formfl:= FormatFloat('0',70*(((y+1)*(x))/(w*w)));
coint:=StrToInt(formfl);
bar.Position:=5+coint;
bar.Update;
//mat.Caption :=mat.Caption+inttostr(x)+' ';
if(x
begin
Yess:=false;
if(Length(mess)=0) then mess:='строка '+ IntToStr(y+1)+#13#10+'короткая, либоизлишек строк в файле';
break;
end;
if(spr'') then
begin
Yess:=false;
if(Length(mess)=0) then mess:='строка '+ IntToStr(y+1)+#13#10+'длинная, либонедостаточно строк в файле';
break;
end;
end;
endelse
begin
Yess:=false;
mess:='Форма должна иметь'+#13#10+'размерболее чем 5х5';
end;
ifYess=true then
begin
bar.Position:=90;
bar.Update;
fori:=0 to w-1 do
begin
forj:=0 to w-1 do
begin
cx[i,j,1]:=(vx[i,j]+1)/9;
cx[i,j,2]:=1-vx[i,j+1]/9;
cx[i,j,3]:=0;
cc[i,j,1]:=(vx[i,j]+1)/9;
cc[i,j,2]:=1-vx[i,j+1]/9;
cc[i,j,3]:=0;
end;
end;
fori:=0 to w-1 do
forj:=0 to w-1 do
fork:=1 to 3 do
nx[i,j,k]:=1;
fori:=0 to w-2 do
forj:=0 to w-2 do
begin
CalcNormals(i,vx[i,j],j,
i+1,vx[i+1,j],j,
i+1,vx[i+1,j+1],j+1,
nx[i,j,1],nx[i,j,2],nx[i,j,3]);
end;
bar.Position:=100;
bar.Update;
Zcoord:=w*2;
XRot:=90;
YRot:=0;
UpDown1.Position:=LastCCX;
UpDown2.Position:=LastCCY;
SelPos(Matrix,LastCCX,LastCCY);
progress.Hide;
Panel4.Show;
end;
end;
Result:= Yess;
end;
//-----------------------------------------------------------------------------
procedureTMat.bmp1Click(Sender: TObject);
begin
try
ifOpenPictureDialog1.Execute then
ifFileExists(OpenPictureDialog1.FileName) then
begin
self.LoadMatrixFromBitmap(OpenPictureDialog1.FileName,self.MCurrent^);
self.GL(self.MCurrent^);
endelse
MessageBox(Handle,
PAnsiChar('Файл'+OpenPictureDialog1.FileName+' не найден'),
'Ошибка',MB_OKor MB_ICONERROR);
except
MessageBox(Handle,
PAnsiChar('Ошибкаво время загрузки файла '+
OpenPictureDialog1.FileName),
'Ошибка',MB_OKor MB_ICONERROR);
end;
end;
procedureTMat.Panel4MouseDown(Sender: TObject;
Button:TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ifButton = mbLeft then
begin
MouseButton:=1;
Xcoord:= X;
Ycoord:= Y;
end;
ifButton = mbRight then
begin
MouseButton:=2;
Zcoord:= Y;
end;
end;
procedureTMat.Panel4MouseMove(Sender: TObject; Shift: TShiftState;
X,Y: Integer);
begin
ifMouseButton = 1 then
begin
xRot:= xRot + (Y — Ycoord) div 2; // moving up and down = rot around X-axis
yRot:= yRot + (X — Xcoord)div 2;
Xcoord:= X;
Ycoord:= Y;
GL(self.MCurrent^);
end;
ifMouseButton = 2 then
begin
Depth:=Depth — (Y-ZCoord) div 3;
Zcoord:= Y;
GL(self.MCurrent^);
end;
//caption:=inttostr(xRot)+':'+inttostr(yRot);
end;
procedureTMat.Panel4MouseUp(Sender: TObject; Button: TMouseButton;
Shift:TShiftState; X, Y: Integer);
begin
MouseButton:=0;
end;
procedureTMat.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
ifOrd(Key)8 then if ((key'9')) then Key:=#0;
end;
procedureTMat.Edit1Change(Sender: TObject);
var
x:Integer;
begin
IfTryStrToInt(Edit1.Text,x)
thenbegin
ifx>self.MCurrent^.w then Edit1.Text:=IntToStr(self.MCurrent^.w);
Ifx
end
elsebegin
Edit1.Text:='1';
end;
SelPos(self.MCurrent^,UpDown1.Position-1,LastCCY);
GL(self.MCurrent^);
end;
procedureTMat.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
ifOrd(Key)8 then if ((key'9')) then Key:=#0;
end;
procedureTMat.Edit2Change(Sender: TObject);
var
x:Integer;
begin
IfTryStrToInt(Edit2.Text,x)
thenbegin
ifx>self.MCurrent^.w then Edit2.Text:=IntToStr(self.MCurrent^.w);
Ifx
end
elsebegin
Edit2.Text:='1';
end;
SelPos(self.MCurrent^,LastCCX,UpDown2.Position-1);
GL(self.MCurrent^);
end;
procedureTMat.CalcNormals(x1,y1,z1,x2,y2,z2,x3,y3,z3:Extended; var nx,ny,nz:Extended);
var
wrki:Double;
vx1,vy1,vz1,vx2,vy2,vz2:Double;
begin
vx1:=x1-x2;
vy1:=y1-y2;
vz1:=z1-z2;
vx2:=x2-x3;
vy2:=y2-y3;
vz2:=z2-z3;
wrki:=sqrt(sqr(vy1*vz2-vz1*vy2)+sqr(vz1*vx2-vx1*vz2)+sqr(vx1*vy2-vy1*vx2));
nx:=-(vy1* vz2 — vz1 * vy2)/wrki;
ny:=-(vz1* vx2 — vx1 * vz2)/wrki;
nz:=-(vx1* vy2 — vy1 * vx2)/wrki;
end;
procedureTMat.Button1Click(Sender: TObject);
begin
ListBox1.Items.SaveToFile(ChangeFileExt(Application.ExeName,'.txt'));
end;
procedureTMat.Init();
begin
Edit1.OnChange:=Edit1Change;
Edit1.OnKeyPress:=Edit1KeyPress;
Edit2.OnChange:=Edit2Change;
Edit2.OnKeyPress:=Edit2KeyPress;
Panel4.OnMouseDown:=Panel4MouseDown;
Panel4.OnMouseMove:=Panel4MouseMove;
Panel4.OnMouseUp:=Panel4MouseUp;
end;
procedureTMat.Button3Click(Sender: TObject);
begin
About.ShowModal;
end;
procedureTMat.Button4Click(Sender: TObject);
begin
Edit1.OnChange:=nil;
Edit1.OnKeyPress:=nil;
Edit2.OnChange:=nil;
Edit2.OnKeyPress:=nil;
Panel4.OnMouseDown:=nil;
Panel4.OnMouseMove:=nil;
Panel4.OnMouseUp:=nil;
Close;
end;
//проводиманализ данных, точки совпадения красным, ниже синим, выше зеленым
functionTMat.MakeAnalysMatrixData(Matrix01,Matrix02:TMatrix; varMatrix03:TMatrix):boolean;
var
i,j,k,y:integer;
begin
Result := false;
//инициализациярезульт. матрицы
Matrix03.w:= Matrix01.w;
withMatrix03 do
begin
SetLength(vx,w);
SetLength(nx,w);
SetLength(cx,w);
SetLength(cc,w);
fori:=0 to w-1 do
begin
SetLength(vx[i],w);
SetLength(nx[i],w);
SetLength(cx[i],w);
SetLength(cc[i],w);
fory :=0 to w-1 do
begin
vx[i,y]:=Matrix01.vx[i,y];
nx[i,y,1]:=Matrix01.nx[i,y,1];
nx[i,y,2]:=Matrix01.nx[i,y,2];
nx[i,y,3]:=Matrix01.nx[i,y,3];
cx[i,y,1]:=Matrix01.cx[i,y,1];
cx[i,y,2]:=Matrix01.cx[i,y,2];
cx[i,y,3]:=Matrix01.cx[i,y,3];
cc[i,y,1]:=Matrix01.cc[i,y,1];
cc[i,y,2]:=Matrix01.cc[i,y,2];
cc[i,y,3]:=Matrix01.cc[i,y,3];
cx[i,y,1]:=255;
cx[i,y,2]:=255;
cx[i,y,3]:=255;
//частьпервого, которая не пересеклась со вторым
//окрашиваемв желтый цвет
if Matrix02.vx[i,y] = 0 then
begin
cx[i,y,1]:=(vx[i,y]+1)/6;
cx[i,y,2]:=(vx[i,y]+1)/6;
cx[i,y,3]:=0;
end;
//частьвторого, которая не пересеклась с первой
//окрашиваемв красный цвет
if Matrix01.vx[i,y] = 0 then
begin
vx[i,y]:=Matrix02.vx[i,y];
cx[i,y,1]:=(vx[i,y]+1)/6;
cx[i,y,2]:=0;
cx[i,y,3]:=0;
end;
//если нетповерхностей => зеленый
if(Matrix01.vx[i,y] = 0)
and(Matrix02.vx[i,y] = 0)then
begin
cx[i,y,1]:=0;
cx[i,y,2]:=(vx[i,y]+1)/2;
cx[i,y,3]:=0;
end;
//совпадающиеобозначае зеленым цветом
if(Matrix01.vx[i,y] = Matrix02.vx[i,y])
and(Matrix01.vx[i,y] 0)
and(Matrix02.vx[i,y] 0)then
begin
cx[i,y,1]:=0;
cx[i,y,2]:=(vx[i,y]+1)/2;
cx[i,y,3]:=0;
end;
//те,которые выше — делаем зеленым
if(Matrix01.vx[i,y]
and(Matrix01.vx[i,y] 0)
and(Matrix02.vx[i,y] 0)then
begin
vx[i,y]:=Matrix02.vx[i,y];
cx[i,y,1]:=0;
cx[i,y,2]:=(vx[i,y]+1)/2;;
cx[i,y,3]:=0;
end;
//те, которыениже будут синим
if(Matrix01.vx[i,y] > Matrix02.vx[i,y])
and(Matrix01.vx[i,y] 0)
and(Matrix02.vx[i,y] 0)then
begin
cx[i,y,1]:=(vx[i,y]+1)/6;
cx[i,y,2]:=0;
cx[i,y,3]:=0;
end;
cc[i,y,1]:=cx[i,y,1];
cc[i,y,2]:=cx[i,y,2];
cc[i,y,3]:=cx[i,y,3];
end;
end;
end;
{
w:Integer; //размерность матрицы
vx:Arrayof Array of Extended;//массив вершин
nx:Arrayof Array of Array[1..3] of Extended;//массив нормалей
cx:Arrayof Array of Array[1..3] of GLfloat;//массив цветов
cc:Arrayof Array of Array[1..3] of GLfloat;//массив цветов
}
Result:= true;
end;
procedureTMat.cb_SurfaceClick(Sender: TObject);
begin
GL(self.MCurrent^);
end;
procedureTMat.Button2Click(Sender: TObject);
begin
//возможно,режим анализа поверхностей
ifself.ComboBoxMatrix.ItemIndex = 2 then
begin
ifnot self.MakeAnalysMatrixData(self.myMatrix01, self.myMatrix02, self.myMatrix03)then
begin
ShowMessage('Не удалось провести анализповерхностей!');
end;
self.GL(self.MCurrent^);
exit;
end;
Panel4.Hide;
FoDialog.InitialDir:=ExtractFilePath(Application.ExeName);
IfFoDialog.Execute then
begin
ifself.LoadMatrixFromDtFile(FoDialog.FileName,self.MCurrent^) then
begin
self.GL(self.MCurrent^);
endelse //Yess=false
begin
progress.Hide;
MessageBox(Handle,PAnsiChar('Ошибкав файле данных!'+#13#10+self.mess),PAnsiChar('Ошибка'),MB_OK orMB_ICONINFORMATION);
Panel4.Hide;
//w:=0;
end;
end;
end;
procedureTMat.ComboBoxMatrixChange(Sender: TObject);
begin
ifself.ComboBoxMatrix.ItemIndex = 0 then self.MCurrent := @self.myMatrix01;
ifself.ComboBoxMatrix.ItemIndex = 1 then self.MCurrent := @self.myMatrix02;
ifself.ComboBoxMatrix.ItemIndex = 2 then self.MCurrent := @self.myMatrix03;
self.Button2.Caption:= 'Загрузить';
ifself.ComboBoxMatrix.ItemIndex = 2 then self.Button2.Caption := 'Провестианализ';
self.GL(self.MCurrent^);
exit;
end;
procedureTMat.Edit3Change(Sender: TObject);
var
pos_x:integer;
pos_y:integer;
value:real;
begin
//изменениезначения вершины
pos_x:= self.UpDown1.Position-1;
pos_y:= self.UpDown2.Position-1;
value:= StrToFloatDef(self.Edit3.Text,-1000);
ifvalue > -1000 then
self.MCurrent^.vx[pos_x,pos_y]:= value;
//else
//self.Edit3.Text := FloatToStr(self.MCurrent^.vx[pos_x,pos_y]);
//теперьпросчитываем цвета
With self.MCurrent^ do
begin
cx[pos_x,pos_y,1]:=(vx[pos_x,pos_y]+1)/9;
cx[pos_x,pos_y,2]:=1-vx[pos_x,pos_y+1]/9;
cx[pos_x,pos_y,3]:=0;
cc[pos_x,pos_y,1]:=(vx[pos_x,pos_y]+1)/9;
cc[pos_x,pos_y,2]:=1-vx[pos_x,pos_y+1]/9;
cc[pos_x,pos_y,3]:=0;
end;
//послеизменений перерисовываем
self.GL(self.MCurrent^);
exit;
end;
procedureTMat.BitBtnSaveClick(Sender: TObject);
var
Spisok:TStringList;
stroka:string;
k,y:integer;
begin
//button«save» click
ifself.MCurrent^.w = 0 then
begin
ShowMessage('Матрица не загружена!');
exit;
end;
ifself.SaveDialogMain.FileName = '' then
self.SaveDialogMain.InitialDir:= ExtractFileDir(ParamStr(0));
ifnot self.SaveDialogMain.Execute() then exit;
//---------------------------------------------
Spisok:= TStringList.Create();
withself.MCurrent^ do
begin
fory:= 0 to w-1 do
begin
stroka:= '';
fork:= 0 to w-1 do
begin
stroka:= stroka + ' ' + FloatToStr(vx[k,y]);
continue;
end;
stroka:= trim(stroka);
Spisok.Add(stroka);
end;
end;
Spisok.SaveToFile(self.SaveDialogMain.FileName);
Spisok.Free();
//---------------------------------------------
ShowMessage('Матрицабыла сохранена.');
exit;
end;
end.
);
var
Spisok:TStringList;
stroka:string;
k,y:integer;
begin
//button«save» click
ifself.MCurrent^.w = 0 then
begin
ShowMessage('Матрицане загружена!');
exit;
end;
ifself.SaveDialogMain.FileName = '' then
self.SaveDialogMain.InitialDir:= ExtractFileDir(ParamStr(0));
ifnot self.SaveDialogMain.Execute() then exit;
//---------------------------------------------
Spisok:= TStringList.Create();
withself.MCurrent^ do
begin
fory:= 0 to w-1 do
begin
stroka:= '';
fork:= 0 to w-1 do
begin
stroka:= stroka + ' ' + FloatToStr(vx[k,y]);
continue;
end;
stroka:= trim(stroka);
Spisok.Add(stroka);
end;
end;
Spisok.SaveToFile(self.SaveDialogMain.FileName);
Spisok.Free();
//---------------------------------------------
ShowMessage('Матрица была сохранена.');
exit;
end;
end.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

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

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат British Monarchy
Реферат Государственное регулирование заимствований субъектов Российской Федерации
Реферат Theodore Dreiser’s novel “An American tragedy”
Реферат Внешнеторговый оборот Российской Федерации – структура, характерные черты
Реферат Эволюция текстовых редакторов и процессоров
Реферат Consequences And Remedies Of Din In The
Реферат Анализ финансового состояния страховой компании на примере ОАО "Российское страховое народное общество"
Реферат 1. Український правопис, його історія та сучасний стан. Основні зміни І доповнення у V виданні “Українського правопису”
Реферат Тенденции развития и новые формы функционирования малого бизнеса на Юге Российской Федерации
Реферат 11 лет на учебном рынке! Предлагаем Вам следующие учебные наглядные пособия: Наши телефоны
Реферат Расчеты и прогнозирование свойств 2,4 диметилбутана, триметилциклогексана, пропилизобутаноата, 2-метил-2-пентанола
Реферат Alcohol And Stress Essay Research Paper Living
Реферат Естественные монополии России - прошлое и настоящее
Реферат Купечество Верховажья
Реферат Анализ диаграмм состояния двойных сплавов