Построение синтезированных 3D изображений местности по цифровой карте

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    5,64 Мб
  • Опубликовано:
    2012-06-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Построение синтезированных 3D изображений местности по цифровой карте

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Рязанский государственный радиотехнический университет






ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к квалификационной работе на соискание степени бакалавра

на тему

Построение синтезированных 3D изображений местности

по цифровой карте




Студент  Алексин А.А.

Руководитель работы

Елесина С.И )

Реферат

Пояснительная записка 147 с., 37 рис., 5 табл., 16 источников, 2 прил.

КАРТА (МАТРИЦА) ВЫСОТ, ЦИФРОВАЯ КАРТА, СИНТЕЗИРОВАННОЕ 3DИЗОБРАЖЕНИЕ МЕСТНОСТИ, ЛАНДШАФТ, ПРОГРАММНЫЙ СТЕНД

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

Результаты будут использоваться в НИР проводимой на кафедре ЭВМ ФГБОУ ВПО «РГРТУ».

The abstract

Explanatory note 147pages, 46 figures, 5 tables, 16 sources, 2 encl.(MATRIX) OF HEIGHTS,DIGTAL MAP, SYNTHESIZED 3D THE DISTRICT IMAGE, LANDSCAPE, PROGRAM STANDthis project development of the program stand intended for creation of synthesized 3D of images of the district on the digital map is executed. The program stand provides construction possibility 3D a district landscape according to the digital map loaded from the file, imitation of flight of the aircraft, structure imposing on a landscape surface for realness giving. Researches for determination of optimum parameters of specification are carried out.

Results will be used in research and development.

СОДЕРЖАНИЕ

1 ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ

2 ФОРМА ПРЕДСТАВЛЕНИЯ МАТРИЦЫ ВЫСОТ

2.1 Общие сведения

2.2 Структура формата в текстовой (символьной) форме представления

2.3 Общий вид текстового файла формата SXF

3 ФУНКЦИИ БИБЛИОТЕКИ OPENGL, НЕОБХОДИМЫЕ ДЛЯ ПОСТРОЕНИЯ 3D ИЗОБРАЖЕНИЯ МЕСТНОСТИ ПО ЦИФРОВОЙ КАРТЕ

3.1 Общие сведения о библиотеке OpenGL

3.2 Графические примитивы в OpenGL

3.3 Наиболее часто используемые функции библиотеки OpenGL

4 РАЗРАБОТКА ВАРИАНТОВ УЧЕТА И ОТОБРАЖЕНИЯ ОБЪЕКТОВОЙ ИНФОРМАЦИИ ЦИФРОВОЙ КАРТЫ МЕСТНОСТИ

4.1 Структура данных об объектах карты

4.1.1 Структура справочных данных

4.1.2 Структура семантики (атрибутов) объекта

4.1.3 Структура вектора привязки 3D модели объекта

4.1.4 Структура параметров отображения (условного знака)

5 РАЗРАБОТКА ПРОГРАММНО-МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ

5.1 Разработка алгоритмов создания виртуальной модели местности

5.1.1 Представление 3D модели местности в виде карты высот

5.1.2 Расчет векторов нормали

5.2 Разработка программного обеспечения

5.2.1 Tao Framework

6 РАЗРАБОТКА ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

6.1 Руководство оператора

6.1.1 Назначение программы

6.1.2 Условия выполнения программы

6.1.3 Выполнение программы

6.1.4 Сообщения оператору

6.2 Руководство программиста

6.2.1 Назначение и условия применения программы

6.2.2 Характеристики программы

6.2.3 Обращение к программе

6.2.4 Входные и выходные данные

6.2.5 Сообщения

6.3 Описание применения

6.3.1 Назначение программного стенда

6.3.2 Условия применения

6.3.3 Описание задачи

6.3.4 Входные и выходные данные

7 ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ

7.1 Объект испытаний

7.2 Цель испытаний

7.3 Требования к программе

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

7.5 Средства и порядок испытаний

7.6 Методы испытаний

7.6.1 Проверка процедуры загрузки и запуска программного стенда

7.6.2 Проверка процедуры загрузки карты высот из файла и отображения построенного 3D изображения

7.6.3 Проверка процедуры загрузки текстуры

7.6.4 Проверка процедуры смены типов отображаемых примитивов

7.6.5 Проверка процедуры изменения уровня детализации

7.6.6 Проверка процедуры отображения летательного аппарата

7.6.7 Проверка процедуры записи маршрута летательного аппарата

7.6.8 Проверка процедуры воспроизведения маршрута летательного аппарата 63

7.6.9 Проверка процедуры отображения области визирования бортовой камеры летательного аппарата

7.6.10 Оценка комплектности и качества документации

7.7 Тестирование методом «белого ящика». Способ базового пути

7.8 Тестирование методом «черного ящика»

8 ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ

8.1 Построение синтезированных 3D изображений местности по цифровой карте

8.1.1 Экспорт карты высот в ГИС Панорама

8.1.2 Загрузка карты высот в программном стенде

8.1.3 Загрузка текстуры

8.2 Определение зависимости частоты кадров от уровня детализации и от типа отображаемых примитивов

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ВВЕДЕНИЕ


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

Еще недавно в геоинформационных системах, как правило, применялись двумерные пространственные данные и так 2,5- мерное пространство, когда величина Z атрибутивно привязана к точке (X,Y), часто через цифровые модели рельефа. В интегрированной фотореалистичной информационной среде, становление которой мы сейчас наблюдаем, осуществляется переход к полноценным трехмерным данным и, более того, с учетом временного параметра, - к многомерным операциям.

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

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

Целью данного дипломного проекта является построение 3D изображения местности по карте высот, хранящейся в формате SXF, а так же моделирование полета летательного аппарата над этой местностью.

Можно выделить следующие достоинства формата SXF:

·    все данные содержатся в одном файле;

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

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

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

программный стенд изображение местность цифровой

1      
ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ

Актуальность выбранной темы выпускной квалификационной работы обуславливается общими тенденциями распространения систем синтезированного обзора (видения). Система синтезированного обзора (Synthetic Vision Systems) - это технология, которая позволяет повысить безопасность полетов и упорядочить действия по управлению летательного аппарата в условиях сниженной видимости. Хотя нет единого, принятого всеми, определения, что понимать под синтезированным обзором, но есть общий для всех определений и моделей элемент - это созданное компьютером на основе навигационных данных изображение той внешней среды, которую пилот может видеть из своей кабины. Почти 50 лет назад, задолго до появления термина «синтезированный обзор», уже существовали предположения о возможности создания такой технологии. Использование моделей Системы синтезированного обзора на борту ЛА началось в начале 1990-х, когда появились значительные достижения в определении точного местоположения летательного аппарата в масштабе реального времени, хранении данных и представлении интегрированных навигационных данных в масштабе реального времени. Система способствует обеспечению управления и контроля, ситуационной осознанности и позволяет осуществлять контроль достоверности данных через интеграцию изображения на основе сенсорных данных.

Согласно исследованиям Всемирного фонда безопасности полетов, почти 75% аварий летательных аппаратов при заходе на посадку и посадке, включая столкновение с землей в управляемом полете, происходят в тех аэропортах, где недоступны или отсутствуют приборы точного захода на посадку. Практически все эти аварии происходят в условиях плохой видимости. Только в США зарегистрированы 58 аэропортов специальной категории, не располагающих приборами для обеспечения точной посадки. Для них было бы ценным получение дополнительных возможностей при посадке. Технология Системы синтезированного обзора увеличивает безопасность, компенсируя недостаток информации в условиях пониженной видимости. Чтобы минимизировать вероятность столкновения с землей в управляемом полете, Система должна обеспечить летчику постоянное осознание следующих условий:

·    расстояние между планируемой траекторией полета и землей;

·        отклонение летательного аппарата от траектории полета;

·        текущее и прогнозируемое расстояние между летательным аппаратом и землей.

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

То есть, такая система должна обеспечивать 2 возможности:

·    ручное управление полетом по сложным траекториям в среде с многочисленными препятствиями и/или сложным рельефом земной поверхности;

·        полет в условиях предельно малой видимости.

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

Главной целью выпускной квалификационной работы является создание программного стенда для построения синтезированных 3Dизображений местности по цифровой карте.

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

Основное назначение программного стенда - построение 3D изображения местности, поэтому основным требованием к программе является реалистичность построенного изображения. Это может быть достигнуто путем добавления освещения в сцену и загрузки изображения местности. Для этого необходимо решить задачи расчета векторов нормали для каждого элемента 3Dизображения местности, размещения источника света и задания его параметров, совмещения построенного 3Dландшафта местности с его графическим изображением. Так же необходимо предусмотреть построение модели летательного аппарата и имитацию его полета над построенным ландшафтом местности.

Программа должна быть разработана на языке C#.NET в среде программирования Microsoft Visual Studio 2010 для операционной системы Windows, иметь удобный пользовательский интерфейс.

2   
ФОРМА ПРЕДСТАВЛЕНИЯ МАТРИЦЫ ВЫСОТ

2.1 Общие сведения


Открытый формат обладает свойствами, которые позволяют на его основе строить архив электронных карт с применением различных технических средств и выполнять обмен пространственными данными между различными ГИС. К этим свойствам относятся следующие:

·      выборка данных из файла может быть выполнена путем однократного

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

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

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

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

Условный код формата - SXF (Storageande Xchange Format - формат хранения и обмена).

2.2 Структура формата в текстовой (символьной) форме представления


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

2.3 Общий вид текстового файла формата SXF


Формат SXF может иметь текстовое представление в виде файла следующей структуры:

.SXF редакция_формата или .SIT редакция_формата

Р001 номенклатура

...

Р101 В L юго-западного угла

Р102 В L северо-западного угла

...

Р207 знаменатель_масштаба

...

.DAT число_объектов_карты

.OBJ код_объектахарактер_локализации

.KEY собственный_номер_объекта

.GEN нижняя_граница_видимостиверхняя_граница_видимости

.GRP номер_группы_объектов

.МЕТ число_подобъектов

число_точек_объекта

x y H или B L H (в зависимости от системы координат)

...

число_точек подобъекта (если число_подобъектов>0 )

x y H или B L H

...

.SEM число характеристик

код_характеристикизначение_характеристики

...

.IMG число_примитивов

_название_примитивачисло_параметров

название_параметразначение_параметра

...

.OBJ код_объектахарактер_локализации

...

.END

Если текстовое представление файла начинается с .SXF, то оно означает, что в файле записаны цифровые векторные данные о местности.

Если текстовое представление файла начинается с .SIT, то это означает, что в файле записаны цифровые векторные данные о ситуации на местности.

Текстовый файл в формате SXF состоит из набора строк переменной длины в

кодах ASCII. Строки должны заканчиваться управляющими кодами "\х0A0D".

В начале строки может стоять символ "точка", за которым следует ключевое слово(SXF (SIT), DAT, OBJ, KEY, GEN, MET, SEM, END и т.п.) или значения соответствующих полей данных о листе или объекте.

Допускается наличие пустых строк, содержащих пробелы и символы конца строки, и строк-комментариев, начинающихся с символа "//".

Обязательными являются строки с ключевыми словами SXF (SIT),DAT, OBJ, END.

ПЕРВАЯ СТРОКА текстового файла должна содержать ключевое слово SXF (SIT) и

редакцию формата (например: "3.0"), отделенную пробелом (пробелами).

В начале файла должны содержаться паспортные данные о листе, затем идут данные об объектах.

РАЗДЕЛ ПАСПОРТНЫХ ДАННЫХ является не обязательным и может отсутствовать.

ОПИСАНИЕ ОБЪЕКТОВ КАРТЫ начинается со строки, содержащей ключевое слово DAT и количество объектов, отделенное пробелом (пробелами). Данная строка является обязательной.

ОПИСАНИЕ ОТДЕЛЬНОГО ОБЪЕКТА начинается со строки, содержащей ключевое слово OBJ, классификационный код объекта и характер локализации, разделенные пробелами.

ПРИЗНАКОМ ЗАВЕРШЕНИЯ НАБОРА цифровых данных об участке местности(листе) является строка с ключевым словом END.

Минимальное корректное содержание текстового файла в формате SXF имеет следующий вид:

.SXF 3.0

.DAT 1

.OBJ 1 LIN

1

0 0

.END

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

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

3    ФУНКЦИИ БИБЛИОТЕКИ OPENGL, НЕОБХОДИМЫЕ ДЛЯ ПОСТРОЕНИЯ 3D ИЗОБРАЖЕНИЯ МЕСТНОСТИ ПО ЦИФРОВОЙ КАРТЕ

3.1 Общие сведения о библиотеке OpenGL


OpenGL (Open Graphics Library - открытая графическая библиотека, графическое API) - спецификация, определяющая независимый от языка программирования платформонезависимый программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

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

3.2 Графические примитивы в OpenGL


Технология OpenGL предоставляет следующие геометрические примитивы, строящиеся на основе опорных точек:

1. GL_POINTS - каждая вершина рисуется, как отдельная точка (рисунок 3.1);

Рисунок 3.1 -Геометрический примитив GL_POINT

2. GL_LINES - между парой вершин рисуется отрезок прямой (рисунок 3.2);

Рисунок 3.2 - Геометрический примитив GL_LINES

3. GL_LINE_STRIP - рисует связную группу отрезков от первой вершины до последней (рисунок 3.3);

Рисунок 3.3 - Геометрический примитив GL_LINE_STRIP

4. GL_LINE_LOOP - как и предыдущий графический примитив, но последняя и первая вершина соединяются между собой (рисунок 3.4);

Рисунок 3.4 - Геометрический примитив GL_LINE_LOOP

5. GL_TRIANGLES - каждая тройка вершин обрабатывается как треугольник (рисунок 3.5);

Рисунок 3.5 - Геометрический примитив GL_TRIANGLES

6. GL_TRIANGLE_STRIP - рисуется связная группа треугольников, каждая вершина, начиная с третьей, объединяется с последней и предпоследней (рисунок 3.6);

Рисунок 3.6 - Геометрический примитив GL_TRIANGLE_STRIP

7. GL_TRIANGLE_FAN - рисуется связная группа треугольников, каждая вершина, начиная с третьей, образует треугольник с первой и последней (рисунок 3.7);

Рисунок 3.7 - Геометрический примитив GL_TRIANGLE_FAN

8. GL_QUADS - каждая группа из четырёх вершин образует четырёхугольник (рисунок 3.8);

Рисунок 3.8 - Геометрический примитив GL_QUADS

9. GL_QUAD_STRIP - рисуется связная группа четырёхугольников, причём каждая нечётная вершина связывается с предпоследней, а чётная с предпоследней и последней (рисунок 3.9);

Рисунок 3.9 - Геометрический примитив GL_QUADS_STRIP

10.GL_POLYGON - рисует выпуклый многоугольник (рисунок 3.10).

Рисунок 3.10 - Геометрический примитив GL_POLYGON

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

Рисунок 3.11 - Пример NURBS-кривой

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

3.3 Наиболее часто используемые функции библиотеки OpenGL

 

1)      Voidgl Begin (GLenummode);

Отмечает начало блока вершинных данных, описывающего геометрические примитивы, используется в паре с glEnd(). Тип примитивов задается аргументом mode, который может принимать значения, описанные выше.

2)      void glVertex{234}{sifd}(TYPE coords); glVertex{234}{sifd}v(const TYPE *coords);

Указывает одну вершину для использования в описании геометрического объекта. Для каждой вершины можно указывать от 2 (x,y) до 4 координат (x,y,z,w), выбирая соответствующую версию функции. Если используется версия, где в явном виде не задаются z или w, то z принимается равным 0, а w - равным 1. Вызовы glVertex*() имеют силу только между вызовами команд glBegin() и glEnd().

3)      void glNormal3{bsidf}(TYPE nx, TYPE ny, TYPE nz); void glNormal3{bsidf}v(const TYPE *v);

Устанавливает текущий вектор нормали, определяемый аргументами. Невекторная версия функции (без v) принимает три аргумента, определяющие вектор (nx,ny,nz), принимаемый в качестве нормали. В качестве альтернативы можно использовать векторную версию этой функции (с v) и передавать в качестве параметра массив, содержащий три элемента, определяющих желаемую нормаль. При использовании версий функции, работающих с типами b, s и i, параметры линейно масштабируются до диапазона [-1.0, 1.0].

)        voidglPushMatrix (void);

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

)        voidglPopMatrix (void);

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

6)      void glRotate{fd} (TYPE angle, TYPE x, TYPE y, TYPE z);

Умножает текущую матрицу на матрицу, которая поворачивает объект (или локальную координатную систему) в направлении против часовой стрелки вокруг луча из начала координат, проходящего через точку (x, y, z). Параметр angle задает угол поворота в градусах.

7)      void glTranslate{fd} (TYPE x, TYPE y, TYPE z);

Умножает текущую матрицу на матрицу, передвигающую (переносящую) объект на расстояния x, y, z, переданные в качестве аргументов функции, по соответствующим осям (или перемещает локальную координатную систему на теже расстояния).

8)      void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);

Устанавливает текущий цвет очистки буфера цвета в RGBA - режиме. Если необходимо, значения red, green, blue и alpha приводятся к диапазону [0, 1]. Цвет очистки по умолчанию черный, то есть (0.0,0.0,0.0,0.0).

9)      void gluLookAt (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);

Задает видовую матрицу и умножает на нее текущую матрицу. Выбранная точка обзора задается аргументами eyex, eyey и eyez. Аргументы centerx, centery и centerzзадают любую точку на линии обзора. Аргументы upz, upyи upz определяют, какое направление считается верхним (то есть направление от дна до вершины объема видимости).

)        voidglEnable (GLenumcap); (GLenumcap);

glEnable() включает механизм (GL_DEPTH_TEST, GL_LINE_STIPPLE, GL_LIGHTING и др.), glDisable() выключает его.

11)    void glLight{if} (GLenum light, GLenum pname, TYPE param); glLight{if}v (GLenum light, GLenum pname, TYPE *param);

Создает источник, задаваемый параметром light (который может принимать значения GL_LIGHT0, GL_LIGHT1, ..., GL_LIGHT7.В параметре param задается значение или значения, в которые следует установить характеристику pname. Если используется векторная версия функции, param представляет собой вектор величин, а если невекторная, то param - одно единственное значение. Невекторная версия функции может использоваться только для указания параметров, чье значение выражается одним числом.

4       РАЗРАБОТКА ВАРИАНТОВ УЧЕТА И ОТОБРАЖЕНИЯ ОБЪЕКТОВОЙ ИНФОРМАЦИИ ЦИФРОВОЙ КАРТЫ МЕСТНОСТИ


Для учета и отображения объектовой информации цифровой карты местности необходимо знать структуру данных об объектах карты, структуру справочных данных, структуру семантики (атрибутов) объекта, структуру вектора привязки 3D-модели объекта, структуру параметров отображения (условного знака) и функции библиотеки OpenGL необходимые для отображения линейных, площадных, точечных, векторных объектов.

4.1   Структура данных об объектах карты


Данные об объектах карты располагаются между записями с ключевыми словами DAT и END.

Количество объектов карты указывается после ключевого слова DAT и отделяется одним или несколькими пробелами.

Данные об отдельном объекте карты состоят из справочных данных, метрики(координат объекта) и семантики (атрибутов объекта). Объекты пользовательских тематических карт дополнительно могут содержать описание условного знака (способа отображения) объекта на карте.

4.1.1 Структура справочных данных

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

Формат записи имеет вид:

.OBJ классификационный_код_характер_локализации

Классификационный код определяет разновидность объектов.

Характер локализации уточняет правила метрического описания (координат)объектов и может принимать следующие значения:- линейные объекты,- площадные (первая и последняя точка метрики совпадают),- точечные,- подписи,- векторные объекты (имеют только две точки),- шаблоны.

Далее в произвольном порядке могут указываться: собственный номер объекта, диапазон границ видимости, номер группы объектов, число подобъектов и другие сведения, которые могут заполняться по мере необходимости.

Собственный номер объекта указывается в записи следующего вида:

.KEY собственный_номер_объекта

Собственный номер имеет вид целого положительного числа (до 2147483647). Он может применяться в процедурах обновления данных и для организации логических связей с другими объектами или записями внешней базы данных.

При добавлении на карту новых объектов номер объекта формируется автоматически.

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

Диапазон границ видимости указывается в записи следующего вида:

.GEN нижняя_граница верхняя_граница

Границы видимости указывают диапазон масштабов отображения карты, при которых объект должен быть виден.

Номер группы объектов указывается, когда несколько объектов должны быть логически связаны. Формат записи имеет вид:

.GRP номер_группы

Номер группы - это целое число от 0 до 65535.

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

.SEG условное_имя_слоя

Условное имя слоя должно соответствовать условному имени слоя в классификаторе уловных знаков.

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

.SCL признак_масштабируемости.

Признак масштабируемости принимает значения ON - если объект

масштабируемый или OFF - если объект не масштабируемый.

Признак выравнивания текста подписи для объекта с характером локализации TIT или MIX должен указываться в записи следующего вида:

.ALG признаки выравнивания по горизонтали и вертикали номер_подобъекта

Признак выравнивания по горизонтали принимает следующие значения:- подпись выровнена по первой точке метрического описания объекта;- подпись выровнена по второй точке метрического описания объекта;- подпись выровнена по середине метрического описания объекта.

Признак выравнивания по вертикали принимает следующие значения:- подпись находится под метрикой объекта;- подпись находится над метрикой объекта;- подпись находится на базовой линии (метрика объекта проходит по основанию символов подписи);- подпись выровнена по средней линии (метрика объекта проходит посередине символов подписи).

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

Если у объекта нет записи с признаком выравнивания или отсутствует признак по какому-либо направлению, то применяются следующие значения выравнивания :

по горизонтали : LEFT;

по вертикали : BASE.

Номер подобъекта может отсутствовать, если это главный объект.

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

.SPL SMOOTH

Если строится огибающий сплайн (проходящий через все точки объекта), то запись имеет вид:

.SPL POINTS

4.1.2 Структура семантики (атрибутов) объекта

Семантические данные об объекте начинаются с записи вида:

.SEM число_характеристик

Число характеристик - это целое положительное число.

Далее идет описание каждой характеристики в виде:

Код_характеристики Значение_характеристики

Код характеристики - это целое число от 0 до 65535.

Значение характеристики - это любое символьное выражение, включающее в себя цифры, буквы, пробелы и специальные символы (+ - . / и так далее).

Объект может не иметь семантических характеристик, в этом случае запись с ключевым словом SEM может не указываться.

За описанием семантики объекта может идти описание метрики объекта (.MET), или описание следующего объекта (.OBJ), или данные о привязке 3D-модели (.V3D),или параметры условного знака (.IMG), или конец набора данных (.END).

4.1.3 Структура вектора привязки 3D модели объекта

На основании данных векторной карты местности может строиться трехмерная модель местности. Большинство объектов местности на трехмерной модели изображаются типовыми трехмерными знаками (шаблонами) из библиотеки трехмерных знаков.

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

Описание привязки трехмерной модели объекта имеет следующий вид: .V3D идентификатор_моделиимя_файла_библиотеки смещение_Xсмещение _Yсмещение_Hугол_оси_X

Данные занимают две строки. В первой строке после ключевого поля .V3Dуказывается числовой идентификатор модели в библиотеке и имя файла библиотеки. Во второй строке указывается смещение относительно первой точки метрики объекта в метрах по трем осям и угол поворота оси X модели относительно оси X карты в градусах. Значения смещений могут быть целыми числами или с дробной частью.

4.1.4 Структура параметров отображения (условного знака)

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

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

Объекты данного типа могут объединяться в слои, имеют уникальный номер для связи с внешними базами данных и могут иметь семантические характеристики.

Кроме того, данный тип объектов может применяться для быстрого

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

Параметры вида объекта начинаются с записи вида:

.IMG число_примитивов

Описание отдельного графического примитива начинается со строки, содержащей ключевое слово с названием примитива и числом параметров описания примитива.Ключевое слово с названием примитива начинается с символа подчеркивания ( _ ).Каждый параметр описывается отдельной строкой. Каждая строка содержит ключевоеслово, описывающее параметр, и значение параметра.

 

4.2 Функции библиотеки OpenGL необходимые для отображения объектовой информации цифровой карты местности

 

1)      voidglBegin(GLenummode);

Отмечает начало блока вершинных данных, описывающего геометрические примитивы, используется в паре с glEnd(). Тип примитивов задается аргументом mode, который может принимать значения, описанные выше.

2)      void glVertex{234}{sifd}(TYPE coords); glVertex{234}{sifd}v(const TYPE *coords);

Указывает одну вершину для использования в описании геометрического объекта. Для каждой вершины можно указывать от 2 (x,y) до 4 координат (x,y,z,w), выбирая соответствующую версию функции. Если используется версия, где в явном виде не задаются z или w, то z принимается равным 0, а w - равным 1. Вызовы glVertex*() имеют силу только между вызовами ко-

манд glBegin() и glEnd().

3)      voidglPointSize (GLfloatsize);

Устанавливает длину и высоту (в пикселях) для визуализируемой точки, size должен быть больше 0.0 и, по умолчанию, равен 1.0.

4)      voidglLineWidth (GLfloatwidth);

Устанавливает толщину линии в пикселях, width должно быть больше 0.0 и по умолчанию равно 1.0.

5)      void glLineStipple (Glint factor, GLushort pattern);

Устанавливает текущий шаблон для отрезка. Аргумент pattern - это 16-битная серия из нулей и единиц, определяющая, как будет рисоваться отрезок. Она повторяется по необходимости для шаблонирования всего отрезка. Единица означает, что соответствующая точка отрезка будет нарисована на экране, ноль означает, что точка нарисована не будет (на попиксельной основе). Шаблон применяется, начиная с младшего бита аргумента pattern. Шаблон может быть растянут с учетом значения фактора повторения factor. Каждый бит шаблона при наложении на отрезок расценивается как factor битов того же значения, идущих друг за другом. Например, если в шаблоне встречаются подряд три единицы, а затем два нуля и factor равен 3, то шаблон будет трактоваться как содержащий 9 единиц и 6 нулей. Допустимые значения аргумента factor ограничены диапазоном от 1 до 256. Шаблонирование должно быть включено передачей аргумента GL_LINE_STIPPLE в функцию glEnable(). Оно блокируется передачей того же аргумента в glDisable(). На рисунке 4.1 изображены примеры шаблонированных отрезков.

Рисунок 4.1 - Шаблонированные отрезки

6)      void glPolygonMode (GLenum face, GLenum mode);

Управляет режимом отображения для лицевых и обратных граней полигонов. Параметр face указывает, для каких граней изменяется режим отображения и может принимать значения GL_FRONT_AND_BACK (режим меняется и для лицевых и для обратных граней), GL_FRONT (только для лицевых), GL_BACK (только для обратных). Параметр mode может быть равен GL_POINT, GL_LINE или GL_FILL в зависимости от желаемого режима отображения: точки, линии или заливка. По умолчанию оба типа граней рисуются в виде заполненных областей пикселей.

7)      void glPolygonStipple (const GLubyte *mask);

Определяет текущий рисунок шаблона заливки полигона. Параметр mask - это указатель на битовую карту размером 32 x 32 бита, интерпретируемую в качестве маски, накладываемой на полигон при рисовании (и при необходимости повторяемой). Там, где стоит 1 - соответствующий пиксель полигона будет нарисован, а там, где появляется 0 - пиксель нарисован не будет. Рисунок 2-12 показывает, как рисунок шаблона конструируется из символов в параметре mask. Шаблонирование полигонов включается и выключается с помощью аргумента GL_POLYGON_STIPPLE функций glEnable() и glDisable(). Интерпретация mask зависит от GL_UNPACK* параметров команды glPixelStore*().

5      
РАЗРАБОТКА ПРОГРАММНО-МАТЕМАТИЧЕСКОГО ОБЕСПЕЧЕНИЯ

 

.1      Разработка алгоритмов создания виртуальной модели местности

 

.1.1   Представление 3D модели местности в виде карты высот

Для представления ландшафта чаще всего используют карту высот. Карта высот - это двумерный массив значений высот ландшафта (рисунок 5.1), взятых с определенным интервалом, т.е. каждому дискретному значению Х и Y в горизонтальной плоскости сопоставляется значение высоты.

          

         а)                                                     б)

Рисунок 5.1 -Карта высот и ее трехмерное отображение

В данном дипломном проекте я использовал карту высот, представленную в формате MTW, в котором каждой паре координат Xи Yсопоставляется координата H.

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

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

Размерность карты высот (MxN) определяется входным файлом в формате MTW, а отображение ландшафта осуществляется с заданным шагом STEP, так что координаты  и (рисунок 5.2).

Рисунок 5.2 - Сетка ландшафта

Алгоритм отображения 3Dмодели местности можно представить в следующем виде (рисунок 5.3).

Рисунок 5.3 - Схема алгоритма отображения ландшафта

5.1.2   Расчет векторов нормали

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

Надо помнить о том, что гладкие поверхности аппроксимируются большим числом небольших плоских полигонов. Если векторы, перпендикулярные к этим полигонам используются в качестве нормалей аппроксимированных поверхностей, то сами поверхности выглядят сегментированными, поскольку пространство векторов не является непрерывным за границами полигонов. Однако во многих случаях для модели существует точное математическое описание, и в каждой точке может быть вычислен вектор истинной нормали. Использование истинных нормалей существенно улучшает результат визуализации, как показано на рисунках5.4 и 5.5.

Рисунок 5.4 - Полигональные нормали

Рисунок 5.5 - Истинные нормали

Аналитические поверхности - это плавные поверхности, которые описываются математическим уравнением (или некоторым набором уравнений). Во многих случаях, нормали проще всего находить для аналитических поверхностей, для которых у есть исчерпывающее описание в следующей форме:

V(s, t) = [X(s, t) Y(s, t) Z(s, t)],

где s и t определены в некотором пространстве, а X, Y и Z - дифференцируемые функции двух переменных. Чтобы вычислить нормаль, нужно найти

,

являющиеся векторами касательными к поверхности в направлениях s и t. Их векторное произведение


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


Вероятно, что потребуется нормализовать результирующий вектор. Для нормализации вектора [x y z], необходимо вычислить его длину


и разделить на нее каждый из компонентов вектора.

В случае аналитических поверхностей, заданных в неявной форме F(x, y, z)=0найти решение значительно сложнее. В некоторых случаях можно разрешить это уравнение относительно одной из переменных, скажем z=G(x, y) и записать его в уже рассмотренной форме V(s, t) = [stG(s, t)].

В этом случае можно продолжать работу уже описанным способом.

Если невозможно привести уравнение поверхности к явной форме, то поможет тот факт, что вектор нормали можно получить как градиент

,

вычисленный в конкретной точке (x, y, z). Вычислить градиент довольно просто, однако значительно сложнее найти точку, которая лежит на поверхности.

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


На рисунке 5.6 вершины, для которых выполняется усреднение векторов нормали, обведены кружком (где ni-вектор нормали полигона, в данном случае треугольника). В зависимости от расположения вершины можно выделить 3 случая усреднения векторов нормали:

·        Вершина имеет координаты (X=0&Y=0) | (X=0&Y=maxY)| (X=maxX&Y=0) | (X=maxX&Y=maxY), тогда результирующий вектор нормали для этой вершины будет иметь вид: .

·        Координаты вершины удовлетворяют одному из следующих условий (X=0&Y>= STEP&Y<= maxY-STEP) | (Y=maxY&X>= STEP&X<=maxX-STEP) | (X=maxX&Y>= STEP&Y<=maxY-STEP) | (Y=0 &X>=STEP&X<=maxX-STEP), тогда результирующий вектор нормали для этой вершины будет иметь вид: .

·        Координаты вершины удовлетворяют следующему условию (X >= STEP& Y >= STEP& X <= maxX - STEP& Y <= maxY - STEP),тогда результирующий вектор нормали для этой вершины будет иметь вид: .

5.1.3   Поворот и перемещение камеры в пространстве

Любой хороший 3D движок должен предоставлять пользователю возможность перемещаться в 3Dпространстве . Одна из возможностей сделать это - перемещать камеру и перерисовывать 3D среду относительно её положения. Это медленно выполняется и тяжело запрограммировать. Поэтому следует делать так:

·    Вращать и проецировать позицию камеры следуя командам пользователя.

·        Вращать мир вокруг начала координат противоположно вращению камеры (это даёт иллюзию того, что повернулась камера).

·        Переместить мир способом, противоположным перемещению камеры (опять-таки, это даёт иллюзию того, что переместилась камера).

Алгоритмы процедур поворота камеры влево и вправо (рисунок 5.7 а, б), перемещения камеры вперед и назад (рисунок 5.8 а, б).

Рисунок 5.7 - Схемы алгоритмов поворота камеры

Рисунок 5.8 -Схемы алгоритмов перемещения камеры

В схемах алгоритмов (рисунок 5.7 а, б) переменные yrot и rotateотвечают за угол поворота камеры.

В схемах алгоритмов (рисунок 5.8 а, б) переменные xpos и zpos отвечают за перемещение камеры вдоль направления векторов X и Z.

После выполнения процедур поворота и перемещения камеры вызывается процедура перерисовки сцены.

5.2    Разработка программного обеспечения


Жизненный цикл ПО - это период от момента появления идеи создания ПО до момента завершения его поддержки фирмой разработчиком или фирмой, выполнявшей сопровождение.

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

На рисунке 5.6 представлены этапы каскадной(водопадной) модели жизненного цикла процесса разработки ПО:

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

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

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

)        Реализация. На данном этапе выполняется кодирование в выбранной системе программирования, тестирование ПО и его отладка.

Рисунок 5.9 - Каскадная(водопадная) модель жизненного цикла процесса разработки ПО

В качестве среды разработки, в данном дипломном проекте, был выбран пакет Microsoft Visual Studio 2010 с подключенной библиотекой Tao Framework. В качестве языка программирования был выбран язык C#.NET.

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

 

5.2.1 Microsoft Visual Studio

Microsoft Visual Studio - линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NETF ramework, .NET Compact Framework и Microsoft Silverlight.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. VisualStudio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и VisualSourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов цикла разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

Visual Studio Professional включает следующие компоненты:

·    Visual Basic .NET;

·        Visual C++;

·        Visual C#;

·        Visual F#.

В данной выпускной квалификационной работе использовался компонент VisualC#.

 

5.2.2 Tao Framework

Tao Framework - это свободно-распространяемая библиотека, с открытым исходным кодом, предназначенная для быстрой и удобной разработки кросс-платформенного мультимедийного программного обеспечения в среде .NETFramewrok и Mono. На сегодняшний день, TaoFramework - это лучший путь для использования библиотеки OpenGL при разработке в среде .NET на языке C#.

В состав библиотеки на данный момент входят все современные средства, которые могут понадобиться в ходе разработки мультимедиа программного обеспечения: реализация библиотеки OpenGL, реализация библиотеки FreeGlut, содержащей все самые новые функции этой библиотеки, библиотека DevIL (легшая в основу стандарта OpenIL - OpenImage Library), и многие другие.

Самые интересные библиотеки, включенные в Tao Framework:

·    OpenGL 2.1.0.12 - свободно распространяемый аппаратно-программный интерфейс для визуализации 2D и 3D графики.

·        FreeGLUT 2.4.0.2 - библиотека с открытым исходным кодом, являющаяся альтернативой библиотеке GLUT (OpenGLUtilityToolkit).

·        DevIL 1.6.8.3 (она же OpenIL) - кроссплатформенная библиотека, реализующая программный интерфейс для работы с изображениями. На данный момент библиотека поддерживает работу с изображениями 43-х форматов для чтения и 17-ти форматов для записи.

·        Cg 2.0.0.0 - язык высокого уровня, созданный для программирования текстурных и вершинных шейдеров. OpenAL 1.1.0.1 - свободно распространяемый аппаратно-программный интерфейс для обработки аудиоданных. (В том числе 3D звука и EAX эффектов).

·        PhysFS 1.0.1.2 - библиотека для работы с вводом / выводом файловой системы, а так же различного вида архивами, на основе собственного API.

·        SDL 1.2.13.0 - кроссплатформенная мультимедийная библиотека, активно использующаяся для написания мультимедийных приложений в операционной системе GNU/LinuxODE 0.9.0.0 - свободно распространяемый физический программный интерфейс, главной особенностью которого является реализация системы динамики абсолютно твёрдого тела и система обнаружения столкновений.

·        FreeType 2.3.5.0 - библиотека реализующая растеризацию шрифтов. Данная библиотека используется в X11 (оконной системе, которая обеспечивает все стандартные инструменты и протоколы для построения GUI (графического интерфейса пользователя) в UNIX подобных операционных системах).

·        FFmpeg 0.4.9.0 - набор свободно-распространяемых библиотек с открытым исходным кодом. Данные мультимедийные библиотеки позволяют работать аудио и видео данными в различных форматах.

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

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

6       РАЗРАБОТКА ПРОГРАММНОЙ ДОКУМЕНТАЦИИ


В данном разделе выполняется разработка программной документации в составе:

·    руководство оператора;

·        руководство программиста;

·        описание применения.

Разработка документации выполнялась в соответствии с ЕСПД ГОСТ 19.101-77, 19.105-78, 19.502-78, 19.504-79, 19.505-79.

6.1    Руководство оператора

 

.1.1 Назначение программы

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

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

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

· загрузки карты высот из файла в формате MTW;

·        построения 3Dизображения местности на основе карты высот;

·        имитации полета летательного аппарата над синтезированной местностью;

·        задания параметров движения летательного аппарата - скорости, высоты;

·        имитации бортовой камеры летательного аппарата;

·        задания углов визирования бортовой камеры летательного аппарата;

·        записи и воспроизведения маршрута полета летательного аппарата;

·        наложения текстуры на синтезированное 3Dизображение местности.

6.1.2 Условия выполнения программы

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

Функции, выполняемые программным стендом, описаны в документе «Руководство пользователя».

Программный стенд функционирует на ПЭВМ, удовлетворяющей следующим требованиям:

·    Процессор с частотой 1 ГГц или выше;

·        128 МБ ОЗУ;

·        160 МБ свободного места на диске;

·        жесткий диск со скоростью 5400 об/мин;

·        видеоадаптер с поддержкой OpenGL 2.0 и разрешением 1024 x 768 (или более высоким);

·        дисковод CD-ROM или порт USB.

Программный стенд работает в среде операционных систем Windows XP SP1/SP2/Vista/7, так же необходимо наличие программной среды .NET Framework версии 2.0 или выше и библиотеки Tao Framework.

6.1.3 Выполнение программы


6.1.3.1 Загрузка и запуск программы

Загрузка и запуск программного стенда выполняется запуском на выполнение файла Landscape.exe.

В случае успешного запуска программы на рабочем столе будет отображено главное окно программы (рисунок 6.1).

Рисунок 6.1 - Главное окно программного стенда

Главное окно программного стенда содержит следующие элементы:

·      в верхней части окна - главное меню программы;

·        рабочую область, в которой отображается 3Dизображение местности;

·        в правой части окна - вкладки:

 - «Ландшафт» - настройка уровня детализации и сводная

информация о построенном изображении;

- «Освещение» - настройка параметров освещения;

- «Трек» - запись/воспроизведение маршрута;

- «Камера» - настройка углов визирования и отображения области «захвата» камеры.

·      в нижней части окна - отображение текущих параметров:

 - азимута камеры;

- скорости летательного аппарата;

- яркости.

6.1.3.2 Загрузка карты высот из файла

Загрузка карты высот из файла в данном программном стенде осуществляется командой главного меню «Файл/Открыть».

В результате выполнения этой команды появится окно «Открыть» (рисунок 6.2).

Рисунок 6.2 - Выбор карты высот для загрузки

После выбора нужного файла и нажатия кнопки «Открыть» в рабочей области программы будет построено 3Dизображение (рисунок 6.3). На вкладке ландшафт появится информация о текущем 3Dизображении: размерность матрицы высот, размерность сетки построенного изображения, количество полигонов, минимальная и максимальная высоты.

Рисунок 6.3 - Главное окно программы с загруженнойкартой высот

 

6.1.3.3  Загрузка текстуры

В данном программном стенде можно загрузить текстуру в одном из графических форматов (BMP, GIF, JPG,JPEG, PNGи др.). Для этого необходимо выполнить команду «Ландшафт/Загрузить текстуру». В результате выполнения этой команды появится окно «Открыть» (рисунок 6.4).

После выбора нужного файла и нажатия кнопки «Открыть» текстура «наложится» на 3D изображение (рисунок 6.5).

Рисунок 6.4 - Выбор текстуры

Рисунок 6.5 - Изображение местности с загруженной текстурой

6.1.3.4 Изменение параметров отображения ландшафта

Параметры отображения ландшафта находятся на вкладке «Ландшафт» в правой части окна. Изменяя параметр «Шаг сетки» можно увеличивать/уменьшать уровень детализации (рисунок 6.6), а изменяя параметр «Тип примитивов» - отображать ландшафт в виде совокупности треугольников, линий и точек (рисунок 6.7).

Рисунок 6.6 - Максимальный уровень детализации

Рисунок 6.7 - Использование примитива «Линии»

 

.1.3.5 Изменение параметров освещения

Изменить параметры освещения можно 3 способами:

·    Командой «Освещение/Светлее(Темнее)»;

·        Кнопками Home/End;

·        На вкладке «Освещение».

Результат представлен на рисунке 6.8.

Рисунок 6.8 - Минимальное освещение ландшафта

6.1.3.6 Запись/воспроизведение маршрута

Маршрут представляет собой совокупность точек пространства, через которые прошел летательный аппарат во время полета.

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

Для записи маршрута необходимо на вкладке «Трек» (рисунок 6.9) нажать кнопку «Запись трека» и начать движение летательного аппарата, по окончании движения еще раз нажать кнопку Запись трека», после чего появится диалоговое окно «Сохранить», в котором необходимо указать имя файла.

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

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

-    «Пауза» - приостанавливает воспроизведение маршрута, после чего летательный аппарат остается в текущей точке своего маршрута;

-       «Стоп» - останавливает воспроизведение маршрута, после чего летательный аппарат помещается в начало своего маршрута;

Так же на этой вкладке имеется регулятор скорости воспроизведения маршрута.

Рисунок 6.9 - Вкладка «Трек»

6.1.3.7 Настройка бортовой камеры летательного аппарата

Выполнить настройку бортовой камеры летательного аппарата можно на вкладке «Камера» (рисунок 6.10).

На этой вкладке можно задать углы визирования камеры α и β, а так же Скрыть/Показать область визирования камеры. В режиме обзора снаружи летательного аппарата камера не работает.

Управление полетом летательного аппарата осуществляется с помощью кнопок «Стрелка вверх», «Стрелка вниз», «Стрелка влево», «Стрелка вправо», а управление бортовой камерой - с помощью кнопок «W», «S», «A» и «D».

Рисунок 6.10 - Рамка бортовой камеры летательного аппарата

6.1.3.8 Отображение летательного аппарата

Существует 2 режима отображения летательного аппарата: вид снаружи и вид из кабины. Смена режима отображения осуществляется нажатием кнопки «V». При переходе в режим отображения снаружи рамка камеры визирования перестанет отображаться, а угол поворота камеры станет равным 0 по отношению к направлению движения летательного аппарата (рисунок 6.11).

Рисунок 6.11 - Вид снаружи летательного аппарата

6.1.3.9 Завершение работы программы

Завершение работы программного стенда возможно с помощью:

·      пункта главного меню «Файл/Выход»;

·        кнопки окна «Закрыть»;

·       

6.1.4 Сообщения оператору


В ходе выполнения программы могут выдаваться сообщения об ошибках.

При попытке открыть файл, структура которого не соответствует формату MTW, будет выдано сообщение об ошибке (рисунок 6.12).

Рисунок 6.12 - Сообщение об ошибке: структура файла не соответствует формату MTW

При попытке выполнить какое-либо действие (запись/воспроизведение трека, загрузка текстуры, изменение параметров отображения ландшафта, изменение параметров бортовой камеры летательного аппарата) при незагруженной карте высот, будет выдано сообщение об ошибке (рисунок 6.13).

Рисунок 6.13 - Сообщение об ошибке: карта высот не загружена

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

Рисунок 6.14 - Сообщение об ошибке: углы α и β не лежат в диапазоне от 0 до 180 градусов

 

.2 Руководство программиста

 

.2.1 Назначение и условия применения программы

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

Функции, выполняемые программным стендом, описаны в документе «Руководство пользователя».

Программный стенд функционирует на ПЭВМ, удовлетворяющей следующим требованиям:

·    Процессор с частотой 1 ГГц или выше;

·        128 МБ ОЗУ;

·        160 МБ свободного места на диске;

·        жесткий диск со скоростью 5400 об/мин;

·        видеоадаптер с поддержкой OpenGL 2.0 и разрешением 1024 x 768 (или более высоким);

·        дисковод CD-ROM или порт USB.

Программный стенд работает в среде операционных систем Windows XP SP1/SP2/Vista/7, так же необходимо наличие программной среды .NET Framework версии 2.0 или выше и библиотеки Tao Framework.

6.2.2 Характеристики программы


Программный стенд позволяет отображать одновременно одно 3Dизображение местности, построенное на основе карты высот, загруженной в программу.

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

Требования к жесткому диску определяются объемом файлов, содержащих карты высот местности.

В программе выполняется стандартная обработка ошибок, не приводящих к нарушению работы программы.

Программа не требует инсталляции. Установка программы осуществляется копированием исполняемого файла и библиотек в установочный каталог.

6.2.3 Обращение к программе

Загрузка и запуск программного стенда выполняется запуском на выполнение файла Landscape.exe.

Порядок работы с программой описан в документе «Руководство оператора».

Завершение работы программного стенда возможно с помощью:

·  пункта главного меню «Файл/Выход»;

·        кнопки окна «Закрыть»;

6.2.4 Входные и выходные данные

В качестве входных данных в данном программном стенде используются файлы матриц высот(MTW) в формате TXT, а так же графические файлы в форматах BMP,JPG, JPEG, PNG. Для работы программы необходимо выполнить загрузку одной карты высот.

Результат загрузки карты высот отобразиться на экране в виде 3Dмодели местности.

Порядок загрузки изображений, отображения результатов работы программного стенда описан в документе «Руководство оператора».

6.2.5 Сообщения

При работе программы оператору могут выдаваться сообщения в виде стандартных модальных окон. Перечень сообщений и порядок действия описан в документе «Руководство оператора».

6.3 Описание применения

 

.3.1 Назначение программного стенда

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

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

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

·    загрузки карты высот из файла в формате MTW;

·        построения 3Dизображения местности на основе карты высот;

·        имитации полета летательного аппарата над синтезированной местностью;

·        задания параметров движения летательного аппарата - скорости, высоты;

·        имитации бортовой камеры летательного аппарата;

·        задания углов визирования бортовой камеры летательного аппарата;

·        записи и воспроизведения маршрута полета летательного аппарата;

·        наложения текстуры на синтезированное 3Dизображение местности.

Данный программный стенд позволяет выполнить моделирование ландшафта местности и полет летательного аппарата над ним.

6.1.2 Условия применения

 

6.3.2.1 Требования к техническим средствам

Программный стенд функционирует на ПЭВМ, удовлетворяющей следующим требованиям:

·  Процессор с частотой 1 ГГц или выше;

·        128 МБ ОЗУ;

·        160 МБ свободного места на диске;

·        жесткий диск со скоростью 5400 об/мин;

·        видеоадаптер с поддержкой OpenGL 2.0 и разрешением 1024 x 768 (или более высоким);

·        дисковод CD-ROM или порт USB.

6.3.2.2 Требования к программным средствам

Программный стенд работает в среде операционных систем Windows XP SP1/SP2/Vista/7, так же необходимо наличие программной среды .NET Framework версии 2.0 или выше и библиотеки Tao Framework.

6.3.2.3 Общие характеристики входной и выходной информации

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

Выходная информация программного стенда отображается на экране в виде 3D изображения местности и в виде файлов маршрута (трека) летательного аппарата в формате TRACKS.

6.3.2.4 Требования организационного характера

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

6.3.3 Описание задачи

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

Для решения поставленной задачи используется язык программирования С#, объектно-ориентированный подход к программированию.

6.3.4 Входные и выходные данные

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

Выходная информация программного стенда отображается на экране в виде 3D изображения местности и в виде файлов маршрута (трека) летательного аппарата в формате TRACKS.

7       ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ


Программа и методика испытаний разработана в соответствии с ЕСПД ГОСТ 19.301-79.

7.1 Объект испытаний


Объектом испытаний является программный стенд для построения 3D изображений местности (далее - программный стенд).

На испытания предъявляется перечень документов программного стенда:

·      «Программный стенд для построения 3Dизображений местности. Описание применения»;

·        «Программный стенд для построения 3Dизображений местности. Руководство программиста»;

·        «Программный стенд для построения 3Dизображений местности. Руководство оператора».

7.2 Цель испытаний


Настоящие испытания программного стенда проводятся в целях оценки:

·      работоспособности программного стенда и соответствия его характеристик функциональным и иным требованиям, предъявляемым к программе на этапе проектирования;

·        соответствия документации требованиям задания на дипломное проектирование и ЕСПД.

7.3 Требования к программе

Состав проводимых проверок приведен в таблице 7.1.

Таблица 7.1 - Состав проводимых проверок

Номер пункта

Выполнение проверки

Номер пункта методики

1

Загрузка и запуск программного стенда

7.6.1

2

Выполнение требований к техническим средствам и системному программному обеспечению

7.6.1

3

Загрузка карты высот из файла и отображение построенного 3D изображения местности

7.6.2

4

Загрузка текстуры

7.6.3

5

Настройка типа отображаемых примитивов

7.6.4

6

Настройка детализации построенного 3D изображения местности

7.6.5

7

Отображение летательного аппарата

7.6.6

8

Запись маршрута летательного аппарата

7.6.7

9

Воспроизведение маршрута летательного аппарата

7.6.8

10

Отображение области визирования бортовой камеры летательного аппарата

7.6.9

 

.4 Требования к программной документации


В состав программной документации должны быть включены следующие документы:

. Эксплуатационные документы:

·      описание применения (ГОСТ 19.502-78);

·        руководство программиста (ГОСТ 19.504-79);

·        руководство оператора (ГОСТ 19.505-79).

. Программа и методика испытаний. (ГОСТ 19.301-79).

7.5 Средства и порядок испытаний


Во время проведения испытаний используются следующие технические и программные средства:

·      персональный компьютер на базе процессораIntelCore 2 DuoE8400 3.0GHz;

·        ОЗУ 2 ГБ;

·        монитор 19’’Samsung SyncMaster 970p;

·        клавиатура;

·        манипулятор типа «мышь»;

·        ОС MS Windows 7Максимальная.

Испытания проводятся на контрольном примере путем ввода и обработки данных контрольного примера. Контрольный пример включает набор файлов карт высот в формате MTWи графических файлов в форматахBMP,JPEG.

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

Далее проводится тестирование функций методами «белого ящика» и «черного ящика».

7.5    Методы испытаний

 

.5.1 Проверка процедуры загрузки и запуска программного стенда

Для выполнения проверки используется ПЭВМ с техническими характеристиками и установленным системным и прикладным программным обеспечением в соответствии с требованиями задания на проектирование.

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

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

7.5.2 Проверка процедуры загрузки карты высот из файла и отображения построенного 3D изображения

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

Результат проверки считается положительным, если загруженная в программу карта высот отображается в рабочей области программного стенда в виде 3Dмодели местности.

7.5.3 Проверка процедуры загрузки текстуры

Для выполнения проверки данной процедуры необходимо выполнить команду «Ландшафт/Загрузить текстуру» и в появившемся окне «Открыть» выбрать файл текстуры.

Результат работы наблюдается визуально.

Результат проверки можно считать положительным, если, выбранное в качестве текстуры изображение, отобразилось на поверхности 3Dмодели местности.

7.5.4 Проверка процедуры смены типов отображаемых примитивов

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

Результат работы наблюдается визуально.

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

7.5.5 Проверка процедуры изменения уровня детализации

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

Результат работы наблюдается визуально.

Результат проверки считается положительным, если в рабочей области программного стенда уменьшение размеров примитивов, из которых состоит 3Dмодель местности, будет соответствовать уменьшению шага сетки и наоборот - увеличение размеров примитивов будет соответствовать увеличению шага сетки.

7.5.6 Проверка процедуры отображения летательного аппарата

Для выполнения проверки процедуры необходимо нажать кнопку «V».

Результат работы наблюдается визуально.

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

7.5.7 Проверка процедуры записи маршрута летательного аппарата

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

Результат проверки считается положительным, если был создан файл маршрута с соответствующим именем и расширением «.TRACKS».

7.5 Проверка процедуры воспроизведения маршрута летательного аппарата

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

Результат работы наблюдается визуально.

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

7.5.1 Проверка процедуры отображения области визирования бортовой камеры летательного аппарата

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

Результат работы наблюдается визуально.

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

7.5.2 Оценка комплектности и качества документации

Оценка качества и комплектности документации выполняется экспертным методом путем анализа документации на соответствие требованиям нормативно-технических документов. Номенклатура разработанных документов определяется заданием на проектирование. Содержание документов проверяется на соответствие требованиям ГОСТ ЕСПД.

7.6 Тестирование методом «белого ящика». Способ базового пути

Пронумерованный текст процедуры изменения яркости освещения имеет вид:

1)      if (br>0.95f) {

)        br=1f; }

)        else { br+=0.05f; }

)        br=(float)Math.Round(br,2);

)        if (r_color>0.775f) {

)        r_color=0.8f; }

)        else { r_color+=0.025f; }

)        if (g_color>0.875f) {

)        g_color=0.9f; }

)        else { g_color+=0.025f; }

)        if (b_color>0.975f) {

)        b_color=1.0f; }

)        else { b_color+=0.025f; }

)        Draw();

Потоковый граф получаем путем отображения пронумерованного текста программы в вершины потокового графа. Полученный потоковый граф приведен на рисунке 7.1.

Рисунок 7.1 - Потоковый граф, отображающий структуру функции

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

.Цикломатическая сложность графа равна количеству регионов потокового графа: V(G)=5

. Цикломатическая сложность графа равна количеству дуг минус количество узлов плюс 2: V(G)=17 -14+2= 5

.Цикломатическая сложность графа равна количеству предикатных узлов плюс 1: V(G)=4 +1=5

Базовое множество путей приведено в таблице 7.2.

Таблица 7.2 - Базовое множество независимых путей

1

1-3-4-5-7-8-10-11-13-14

2

1-2-4-5-7-8-10-11-13-14

3

1-2-4-5-6-8-10-11-13-14

4

1-2-4-5-6-8-9-11-13-14

5

1-2-4-5-6-8-9-11-12-14


Каждый тестовый вариант формируется в следующем виде:

·  исходные данные;

·        ожидаемые результаты;

·        реальные результаты.

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

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

Тестовые варианты, удовлетворяющие выявленному множеству независимых путей в структуре операторов рассматриваемой процедуры, представлены в таблице 7.3.

Таблица 7.3 - Результаты тестирования методом «белого ящика»

№ пути

Исходные данные

Ожидаемые результаты

Реальные результаты

1

br=0.8f r_color=0.7f g_color=0.8f b_color=0.9f

br=0.85f r_color=0.725f g_color=0.825f b_color=0.925f

br=0.85f r_color=0.725f g_color=0.825f b_color=0.925f

2

br=1.5f r_color=0.7f g_color=0.8f b_color=0.9f

br=1.0f r_color=0.725f g_color=0.825f b_color=0.925f

br=1.0f r_color=0.725f g_color=0.825f b_color=0.925f

3

br=1.5f r_color=0.85f g_color=0.8f b_color=0.9f

br=1.0f r_color=0.8f g_color=0.825f b_color=0.925f

br=1.0f r_color=0.8f g_color=0.825f b_color=0.925f

4

br=1.5f r_color=0.85f g_color=0.95f b_color=0.9f

br=1.0f r_color=0.8f g_color=0.9f b_color=0.925f

br=1.0f r_color=0.8f g_color=0.9f b_color=0.925f

br=1.5f r_color=0.85f g_color=0.95f b_color=1.5f

br=1.0f r_color=0.8f g_color=0.9f b_color=1.0f

br=1.0f r_color=0.8f g_color=0.9f b_color=1.0f


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

7.7 Тестирование методом «черного ящика»

Рассмотрим тестирование методом «черного ящика» процедуры Detalization, которая устанавливает шаг сетки при построении ландшафта.

На основании спецификации можно выделить следующие классы эквивалентности:

·    Значение шага сетки принадлежит промежутку [1..128] и выделим значения, необходимые для проверки:

-    Шаг сетки равен 1.

-       Шаг сетки равен 128.

·    Значение шага сетки не принадлежит промежутку [1..128] и выделим значения, необходимые для проверки:

-    Шаг сетки равен 0.

-       Шаг сетки равен 130.

Дерево разбиений представлено на рисунке 7.2.

Рисунок 7.2 - Дерево разбиений

Дерево содержит 4 листа. Составим тестовые варианты для каждого из них (таблица 7.4):

Таблица 7.4 - Тестовые варианты и результаты

№ листа

Исходные данные

Ожидаемые результаты

Реальные результаты

1

Шаг сетки=1

Шаг сетки=1

Шаг сетки=1

2

Шаг сетки=128

Шаг сетки=128

Шаг сетки=128

3

Шаг сетки=0

Шаг сетки=1

Шаг сетки=1

4

Шаг сетки=130

Шаг сетки=128

Шаг сетки=128


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

8       ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ

8.1 Построение синтезированных 3D изображений местности по цифровой карте

 

.1.1 Экспорт карты высот в ГИС Панорама

Для экспорта карты высот в ГИС Панорама необходимо выполнить перечень команд:

·    «Файл\Открыть», выбрать файл в формате .SXF;

·        «Файл\Экспорт в…\Матрицы высот (TXT…)», в появившемся окне нажать кнопку «Выключить все», а затем кнопку «Выполнить».

После выполнения указанных действий будет сформирован файл карты высот с расширением .TXT.

8.1.2 Загрузка карты высот в программном стенде

Для загрузки карты высот необходимо выполнить команду «Файл\Открыть» и в появившемся окне «Открыть», выбрать файл карты высот, сформированный с помощью ГИС Панорама. Результат выполнения команды представлен на рисунке 8.1.

Рисунок 8.1 - Результат загрузки карты высот

 

8.1.3 Загрузка текстуры

Для загрузки текстуры необходимо выполнить команду «Ландшафт\Загрузить текстуру» и в появившемся окне открыть выбрать текстуру в одном из графических форматов. Результат выполнения команды представлен на рисунке 8.2.

Рисунок 8.2 - Результат загрузки текстуры

8.2 Определение зависимости частоты кадров от уровня детализации и от типа отображаемых примитивов


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

·    Процессор - Intel Core 2 Duo E8400 3.0Ггц;

·        ОЗУ - Corsair2048MБ;

·        Жесткий диск - WD 500 ГБ, 7200 об/мин;

·        Видеокарта - Nvidia GeForce 9800GT 512 МБ.

ПЭВМ удовлетворяет всем требованиям к программным средствам, изложенным в пункте «Разработка программной документации», кроме того для фиксации частоты кадров понадобится программа Fraps, которая отображает частоту кадров в 3Dприложениях.

Для проведения теста были выполнены следующие настройки программного стенда:

·    загружена карта высот «Коломна(N37030)»;

·        загружена текстура «Коломна»;

·        тип отображения летательного аппарата - из кабины;

·        уровень освещенности - максимальный;

·        область визирования бортовой камеры летательного аппарата - не отображать.

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

Таблица 8.1 - зависимость частоты кадров от уровня детализации и от типа отображаемых примитивов

Шаг сетки

1

2

4

8

16

32

64

128

Тип примитивов

Точки

2

6

26

26

26

26

26

26


Линии

1

5

21

26

26

26

26

26


Треугольники

1

2

12

22

26

26

26

26


На пересечении строки и столбца в таблице 8.1 находится частота кадров, соответствующая выбранному шагу сетки и типу примитивов.

Рисунок 8.3 - Графики - зависимость частоты кадров от уровня детализации и от типа отображаемых примитивов

На рисунке 8.3 видно, что начиная с определенного значения шага сетки наблюдается резкое падение частоты кадров (8 - для примитива «треугольники», 4 - для примитивов «точки» и «линии»), поэтому не рекомендуется устанавливать значение шага сетки меньше порогового значения.

ЗАКЛЮЧЕНИЕ


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

Были разработаны следующие алгоритмы:

·    загрузки карты высот из файла;

·        построения ландшафта по карте высот;

·        расчет векторов нормали для каждой точки ландшафта;

·        загрузки текстуры;

·        построения летательного аппарата;

·        записи и воспроизведения маршрута летательного аппарата.

Были разработаны варианты учета и отображения объектовой информации цифровой карты местности.

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

·    автоматизированного видения;

·    технического зрения;

·        улучшенного видения;

·        улучшенной визуализации.

Было проведено тестирование программного стенда, подготовлена программная документация.

Результаты исследований будут использоваться в НИР, проводимых на кафедре ЭВМ.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ


1      ГОСТ 19.101-77 Единая система программной документации. ВИДЫ ПРОГРАММ И ПРОГРАММНЫХ ДОКУМЕНТОВ.

2       ГОСТ 19.105-78 Единая система программной документации. ОБЩИЕ ТРЕБОВАНИЯ К ПРОГРАММНЫМ ДОКУМЕНТАМ.

         ГОСТ 19.502-78 Единая система программной документации. ОПИСАНИЕ ПРИМЕНЕНИЯ.

         ГОСТ 19.301-79 Единая система программной документации. ПРОГРАММА И МЕТОДИКА ИСПЫТАНИЙ. Требования к содержанию и оформлению.

         ГОСТ 19.504-79 Единая система программной документации. РУКОВОДСТВО ПРОГРАММИСТА. Требования к содержанию и оформлению.

         ГОСТ l9.505-79 Единая система программной документации. РУКОВОДСТВО ОПЕРАТОРА. Требования к содержанию и оформлению.

7      Герберт ШилдтC# 4.0 полное руководство. М.: Издательский дом «Вильямс», 2011. - 1056 с.

8       Нейгел, Ивьен, Глинн, Уотсон, СкиннерC# 2008 и платформа .NET 3.5 для профессионалов. Москва, СПб, Киев: «Диалектика», 2009 - 1210 с.

         Френсис ХиллOpenGL. Программирование компьютерной графики. Питер, 2006 - 1088 с.

         Т. Девис, Дж. Нейдер, Д. ШрайнерOpenGL. Руководство по программированию. Питер, 2006 - 624 с.

         Ричард С. Райт-мл., Бенджамин ЛипчакOpenGL. Суперкнига. М.: Издательский дом «Вильямс», 2006. - 1040 с.

         Костяшкин Л. Н., Бабаев С. И., Логинов А. А., Павлов О. В. «Технологии систем улучшенного/синтезированного зрения для управления летательными аппаратами»

         «Синтезированное изображение: два подхода», «AvionicsMagazine», 2005.- URL: http://www.teknol.ru/library/synthetic_vision.pdf

         «Разработка компьютерной графики с .NETC# и OpenGLAPI», 2009.- URL:http://esate.ru/page/uroki-OpenGL-c-sharp

         «Работа с OpenGL», 2008.- URL:http://pmg.org.ru

16     «NeonHelium Productions», 1997. - URL:http://nehe.gamedev.net


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!