Другое

Как пользоваться квадрантом: полноценная инструкция простыми словами

Lorem ipsum dolor

Вопрос: «Как пользоваться квадрантом в программировании?» подразумевает использование так называемого «дерева квадрантов».

Дерево квадрантов — это специализированное структурирование данных, разбивающее определенное пространство не небольшие части, с которыми потом можно легко взаимодействовать. Данное «дерево» в основном применяется при разбивке 2D-проекций в тех случаях, когда есть динамический контент или движущийся объект, за которым нужно следить или нужно обозначить и редактировать его маршрут.

 

Как пользоваться квадрантом?

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

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

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

Смысл вроде ясен. Но как здесь пользоваться квадрантом? Чтобы воспользоваться квадрантом, нужно в дерево квадрантов внести вероятное поведение всех элементов модели маршрута (точка, отрезок, геозона). В этом случае наш заказчик сможет в своем приложении прокладывать маршрут по уже запрограммированным точкам, при этом будет происходить автоматический пересчет всего маршрута. Выделенный нашим заказчиком элемент будет автоматически выводить привязанные к нему другие элементы. Например, по точке будут определяться ближайшая геозона и ближайшие отрезки.

Вот что примерно должно получиться по факту:

Как пользоваться квадрантом: полноценная инструкция простыми словами

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

Схематичный код нашего дерева квадрантов:

class QuadTree {

 

boundary: AABB;

parent: QuadTree;  // Обозначаем родительский элемент нашего древа

level: number;  // Обозначаем глубину и размер нашего древа

 

points;  // Точка маршрута

segments;  // Отрезок маршрута

polygons;  // Геозона

 

northWest: QuadTree;

northEast: QuadTree;

southWest: QuadTree;

southEast: QuadTree;

}

 

Что в этом случае сможет сделать наш заказчик?

Для построения судоходного маршрута заказчику будут доступны следующие функции:

  1. Он сможет добавлять новые точки. На любом свободном месте между конечной и начальной точкой пользователь может «нажать», и тогда образуется новая точка.
  2. Он может добавить отрезок. Если пользователь добавит несколько последовательных точек, то между ними образуется отрезок.
  3. Удалить точку или отрезок.
  4. Переместить точку вместе с отрезками, изменив их расположение на карте.

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

 

Заключение

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

Помимо описанной ситуации, дерево квадрантов может быть применено:

  • для представления дерева изображений;
  • при применении пространственных data base;
  • для выявления столкновения объектов в 2D-пространствах;
  • при сокрытии необозримых компонентов местности в графических приложениях;
  • для сохранения информации в табличном представлении;
  • в вычислениях по гидродинамике и электромагнетизме;
  • при создании игр-симуляций человеческой деятельности;
  • и др.

Схожие статьи

Instant Apps: что это такое, зачем нужно и как это работает?
Другое

Instant Apps: что это такое, зачем нужно и как это работает?

CoffeeScript: что это за язык программирования и чем он отличается?
Другое

CoffeeScript: что это за язык программирования и чем он отличается?

СИ шарп команды. Обзор условных операторов C# для начинающих
Другое

СИ шарп команды. Обзор условных операторов C# для начинающих

Как произвести оптимизацию игры Unity и Unity3D: советы и лайфхаки
Другое

Как произвести оптимизацию игры Unity и Unity3D: советы и лайфхаки

×