Разработка приложения indoor-навигации: модуль визуализации

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.01.2016
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

2.5 Реализация модуля

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

Как упоминалось ранее IndoorNavigation.Core является связующим звеном в данной разработке, которое содержит все ссылки, находящиеся внутри массивов, на различные модули и интерфейсы, а так же экземпляры классов Лог и API, используемые для вызова их функций. Внутри ядра осуществляется инициализация всех необходимых переменных, объектов и евентов. Среди них:

· Сцена - THREE.Scene.

· Виртуальная перспективная камера и её контроллер - THREE.PerspectiveCamera & THREE.OrbitControls.

· WebGL рендерер c эффектом сглаживания - THREE.WebGLRenderer.

· Часы - THREE.Clock, используемые для контроля времени прошедшего между кадрами, обеспечивая плавное изменение значений, т.к. оно не является константой.

· Куб имитирующий некое пространство и использующий THREE.BoxGeometry & THREE.MeshBasicMaterial.

· Окно контроля FPS.

· Оси измерения - THREE.AxisHelper.

· Сетка - THREE.GridHelper, лежащая в на осях x и z.

· Евент onDocumentMouseMove, срабатывающий при изменении положения курсора.

· Евент onDocumentMouseDown, срабатывающий при нажатии любой клавиши мышки.

· Евент THREEx.WindowResize, срабатывающий во время изменения размеров окна браузера.

Так же внутри ядра осуществляется обновление объектов путем вызова функций, опеределенных в методе animate. Данный процесс осуществляется с помощью функции requestAnimationFrame, которая указывает браузера на то, что необходимо произвести анимацию и просит его запланировать перерисовку на следующем кадре. Таким образом, метод animate будет выполняться снова и снова, до тех пор, пока не вызовется функция cancelAnimationFrame. Это означает, что все методы и функции находящиеся в нём так же будут обновляться. Следующие методы содержатся в функции animate:

· Render - обновление WebGL рендерара.

· Update - обновление контроллера камеры и окна FPS.

· updateModules - обновление всех включенных модулей.

· updateAPI - обновление всех функций вызванных в API.

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

IndoorNavigation.Log - объект, предоставляющий функции для отображения информации внутри html разметки.

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

IndoorNavigation.Interface.BuildingInterface - является тестовым интерфейсом использующим стороннюю библиотеку. Необходим для проверки работы функций модуля постройки. Впоследствии будет заменен разработкой Алексея Гайнутдинова.

IndoorNavigation.Module - абстрактный класс, описывающий общии свойства всех модулей. Имеет в наличии функции включения и выключения, а так же метод updateModule, который переопределяется каждым модулем.

IndoorNavigation.BuildingModule - класс, отвечающий за хранение, добавление и удаление всех объектов - этажей некого виртуального здания. Модуль позволяет осуществлять обновление всех этажей с помощью переопределенного метода updateModule, а так же производить различные связанные с ними операции, такие как: скрытие этажа и комнат, изменение их прозрачности, вызов определенного события.

IndoorNavigation.BuildingModule.Floor - класс, описывающий объект - этаж, который после инициализации добавляется в модуль построения. Его основная особенность заключается в реализации алгоритма, позволяющего строить поверхности с заранее описанными прямоугольными вырезами для различных объектов, таких как окна, двери и другие. Его работа осуществляется в несколько этапов:

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

· Нахождение всех связанных с ней объектов - вырезов.

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

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

· Происходит расчет граней, находящихся по краям плоскости.

· Записываются все скаляры, на которые будут умножаться векторы, необходимые при проверке пересечения с объектами.

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

Главная цель этого алгоритма - создать оптимальное количество полигонов для покрытия поверхности с вырезами. Далее представлена диаграмма, графически описывающая алгоритм:

Рисунок 2.11. Алгоритм покрытия поверхности с вырезами.

IndoorNavigation.FurnitureModule - класс, отвечающий за хранение, добавление и удаление всех объектов интерьера, располагающихся внутри и снаружи виртуального здания. Модуль позволяет осуществлять обновление всех объектов, с помощью переопределенного метода updateModule. На момент написания работы реализовано три типа объектов:

· IndoorNavigation.FurnitureModule.StairsType1 - ступенчатая лестница, задаваемая параметрами.

· IndoorNavigation.FurnitureModule.DoorType1 - абстрактная дверь, представляющая собой параллелепипед, имеющая возможность открываться и закрываться.

· IndoorNavigation.FurnitureModule.WindowType1 - абстрактное окно, представляющее собой параллелепипед. Так же имеет возможность открываться и закрываться.

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

IndoorNavigation.NetworkModule - класс, отвечающий за хранение, добавление и удаление всех объектов сети, располагающихся внутри и снаружи виртуального здания. Как и предыдущий модуль, осуществляет обновление всех объектов, с помощью переопределенного метода updateModule. На момент написания работы реализовано семь типов объектов:

· IndoorNavigation.NetworkModule.Door - класс, определяющий объект, который не является элементом компьютерной сети, однако используется в качестве вершины графа для осуществления связи между устройствами, представленными в нём же. Так же используется для перемещения виртуальной камеры.

· IndoorNavigation.NetworkModule.Computer - класс, определяющий объект инженерной сети - компьютер. Геометрическая модель является абстрактной и представляет собой параллелепипед.

· IndoorNavigation.NetworkModule.Server - класс, определяющий объект инженерной сети - сервер. Геометрическая модель создана внутри программы трехмерного моделирования Blender и импортирована с помощью THREE.ColladaLoader.

· IndoorNavigation.NetworkModule.Commutator - класс, определяющий объект инженерной сети - коммутатор. Геометрическая модель является абстрактной и представляет собой параллелепипед.

· IndoorNavigation.NetworkModule.Modem - класс, определяющий объект инженерной сети - модем. Геометрическая модель является абстрактной и представляет собой параллелепипед.

· IndoorNavigation.NetworkModule.Printer - класс, определяющий объект инженерной сети - принтер. Геометрическая модель является абстрактной и представляет собой параллелепипед.

· IndoorNavigation.NetworkModule.Rosette - класс, определяющий объект инженерной сети - розетку. Геометрическая модель является абстрактной и представляет собой параллелепипед.

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

IndoorNavigation.API - класс, внутри которого реализуются функции необходимые интерфейсу для взаимодействия с элементами модуля. Среди них:

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

· HighlightWire - отмечает необходимый провод, изменяя его цвет.

· FixWires - восстанавливает все провода к начальному виду.

· DeletePath - удаляет созданный путь.

· MarkTroublePlace - отмечает на выбранном проводе указанное расстояние, не превышающее его длину.

· GetWireLength - возвращает длину выбранного провода.

Внутри функции CreatePath осуществляется создание экземпляра класса IndoorNavigation.API.Path, который реализует необходимые функции для создания кратчайшего маршрута и последующей анимации его составляющих. Виртуальный путь представляет собой набор круглых частиц, перемещающихся от начальной точки к конечной. На момент написания работы дистанция до искомого объекта определяется при помощи цвета частицы. Чем дальше от конечного пункта, тем краснее перемещаемые частицы, и наиборот, чем ближе, тем зеленее. Данный механизм интуитивно понятен, но в будущем может быть дополнен конкретной информацией, включающей единицы измерения. Алгоритм построения пути описывается следующими этапами:

· Получаем набор последовательных вершин, между которыми необходимо проложить маршрут.

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

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

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

Далее представлен графический результат алгоритма до начала процесса обновления (рис.2.12.).

Рисунок 2.12. Виртуальный путь.

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. The Standard for Embedded Accelerated 3D Graphics // The Khronos Group Inc. [Электронный ресурс] [Режим доступа https://www.khronos.org/opengles/2_X/] [Проверено: 23.04.2015].

2. WebGL Specification version 1.0.3, 27.09.2014 // The Khronos Group Inc. [Электронный ресурс] [Режим доступа https://www.khronos.org/registry/webgl/specs/1.0/] [Проверено: 23.04.2015].

3. WebGL Specification version 2, 2015 // The Khronos Group Inc. [Электронный ресурс] [Режим доступа https://www.khronos.org/registry/webgl/specs/latest/2.0/ ] [Проверено: 23.04.2015].

4. Munshi A., Ginsburg D., Shreiner D. OpenGL ES 2.0. Programming Guide: 2009. 478c.

5. Object Oriented Paradigm // The TutorialsPoint. [Электронный ресурс] [Режим доступа http://www.tutorialspoint.com/object_oriented_analysis_design/ooad_object_oriented_paradigm.htm] [Проверено: 23.04.2015].

ПРИЛОЖЕНИЕ А. ДИАГРАММА КЛАССОВ 3D МОДУЛЯ ВИЗУАЛИЗАЦИИ

Рисунок A.1. Диаграмма классов 3D модуля визуализации

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [3,6 M], добавлен 16.07.2016

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

    курсовая работа [2,1 M], добавлен 14.08.2014

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

    курсовая работа [2,2 M], добавлен 14.04.2019

  • Разработка мультитач-ориентированного приложения для туристических фирм на языке C# с использованием WPF. Применение Expression Blend для создание приложения интерактивной навигации. Проектирование программы для навигации в торговом центре "Гудвин".

    отчет по практике [1,1 M], добавлен 16.09.2012

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Назначение и возможности разработанного приложения для контроля активности сетевых и периферийных устройств предприятия. Язык программирования Java. Распределенные многоуровневые приложения. Структура базы данных, интерфейс разработанного приложения.

    курсовая работа [1,0 M], добавлен 16.12.2012

  • Особенности разработки и реализации модулей двухмерной и трехмерной визуализации. Основные задачи трехмерного модуля управления. Анализ функций модуля управления ParamColorDrawer. Характерные особенности схемы функционирования программного средства.

    реферат [2,2 M], добавлен 07.03.2012

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

    дипломная работа [1,3 M], добавлен 06.07.2015

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

    дипломная работа [1,5 M], добавлен 22.03.2018

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

    дипломная работа [1,4 M], добавлен 03.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.