Маршрут полета БЛА. Характеристики и визуализация

Дипломная работа - Транспорт, логистика

Другие дипломы по предмету Транспорт, логистика

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

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

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

Благодаря такому алгоритму, при первой визуализации маршрута появляется задержка, созданная работой API-метода ГИС Интеграция, а при последующих перемещениях карты и изменении размера экранного окна, в котором осуществляется визуализация, наблюдается заметное сокращение времени, затрачиваемого на отрисовку, за счет того, что большая часть карты берется из кэша и быстрым библиотечным методом Qt рисуется на экране. Замедление работы подсистемы наблюдается лишь при постраничном пролистывании карты.

Кэширование карты решает еще одну проблему API-метода ГИС Интеграция, заключающуюся в том, что дважды отрисованная одна и та же область карты будет отличаться в обоих случаях (пунктирные линии границ, кустарники и др.). При использовании кэша карта рисуется только один раз - в кэше, а все запросы на повторную отрисовку карты обрабатываются путем предоставления необходимой части карты из кэша.

 

2.3.3.1.2 Отрисовка объектов сцены. Кэш сцены

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

Для повышения скорости работы подсистемы визуализации маршрутов реализован алгоритм, определяющий изменившуюся часть маршрута. После ее вычисления производится обращение к кэшу карты, с запросом изменившейся подобласти кэшированной карты. Затем на полученную из кэша часть карты наносится изменившаяся часть маршрута полета БЛА из кэша сцены.

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

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

 

.3.3.1.3 Обработка событий мыши. Работа с представлениями

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

. нажатие левой клавиши мыши в области графического примитива;

. перемещение указателя мыши с зажатой левой кнопкой мыши, нажатие которой произошло в области графического примитива;

. отпускание левой кнопки мыши.

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

Кратко рассмотрим условные обозначения, используемые при построении диаграмм взаимодействия объектов в нотации UML при использовании программы Rational Rose.

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

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

 

Рисунок 2.1 Взаимодействие объектов при нажатии левой кнопки мыши в области графического примитива

 

При нажатии кнопки мыши в определенном экранном окне, происходит обработка этого события в соответствующем представлении (1). В представлении определяется совокупность примитивов, находящихся под курсором (2). Из полученной совокупности конкурентов выбирается активный графический примитив (3) после чего устанавливается его активность по отношению к сцене (4), которая может визуализироваться в нескольких представлениях одновременно. Другими словами, на этапе (4) активный примитив для определенного представления становится активным примитивом для всех представлений, имеющих общую сцену. Далее, осуществляется обработка события в сцене (5). Происходит поднятие активного примитива на самый верхний уровень во всех представлениях (6, 7). Затем событие направляется для обработки активному примитиву (8).

Благодаря такому алгоритм?/p>