Russian Qt Forum
Ноябрь 23, 2024, 10:54
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Алгоритм размещения надписей на карте
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Алгоритм размещения надписей на карте (Прочитано 4458 раз)
deMax
Хакер
Offline
Сообщений: 600
Алгоритм размещения надписей на карте
«
:
Октябрь 17, 2013, 14:20 »
Есть географическая карта на ней размещены объекты (на карте обозначаются кружочками), как создать к ним подписи чтобы подписи не пересекались друг с другом и не перекрывали сами объекты?
Записан
ecspertiza
Супер
Offline
Сообщений: 1053
С уважением, мастер конфетного цеха!
Re: Алгоритм размещения надписей на карте
«
Ответ #1 :
Октябрь 17, 2013, 15:04 »
В голову приходит проверка на пересечение областей, любая область будет иметь прямоугольную форму. Я бы сделал так:
1. Проверяем сколько областей на карте, если 0 то добавляем безболезненно.
2. Областей больше ноля, знаем координаты и размеры новой области, проверяем по уже существующим с какими пересекается, если не пересекается, добавляем на карту.
3. Если есть пересечение с соседними областями, то начинаем изменять координаты новой области. Например точка на карте соответствовала левому нижнему углу, перемещаем зону таким образом, что бы точка на карте соответствовала правому нижнему углу, затем опять проверяем пересечения. Таким образом мы можем проверить все 4ре угла, если всеравно есть пересечения, то на откуп программисту, можно поставить как угодно, тут уж ничего не поделаешь.
4. Для оптимизации, можно сначала найти области с которыми возможно пересечение и затем уже проверять только по ним.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Алгоритм размещения надписей на карте
«
Ответ #2 :
Октябрь 17, 2013, 15:22 »
Как то так и реализовано, точнее размещаются все надписи(они же прямоугольники), потом проходят по всем надписям и если надпись пересекается ее начинаю крутить вокруг точки с увеличением радиуса, пока не найдется свободное место или радиус станет максимальным. от точки к надписи рисуется линия, вроде работает, но выглядит убого.
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Алгоритм размещения надписей на карте
«
Ответ #3 :
Октябрь 22, 2013, 13:03 »
Может есть готовые алгоритмы или схожие задачи? Желательно быстрый алгоритм, хотя расчет и будет произведен один раз.
Записан
alex312
Хакер
Offline
Сообщений: 606
Re: Алгоритм размещения надписей на карте
«
Ответ #4 :
Октябрь 22, 2013, 13:47 »
Сам я не силен, но вот есть библиотечка -
http://www.cgal.org/
, поройся в доках, может что и подойдет.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...