Генерация полигона по набору хаотичных точек
-
- Новоприбывший
- Сообщения: 12
- Зарегистрирован: 10 дек 2011, 20:41
- Репутация: 0
Генерация полигона по набору хаотичных точек
Приветствую. Есть задачка, а на ум решений особо не приходит. Существует неким образом отфильтрованный набор устройств. В устройствах соответственно хранится их положение и прочие параметры. Необходимо нарисовать подложки для групп устройств по определенному параметру. Т.е. грубо говоря на карте 200 устройств, и они логически сгруппированы на 7 областей, вот эти области требуется выделить сглаженной кляксой. Выделение может строиться по различным параметрам (но они схожи и в принципе всегда подходящие устройства находятся рядом - т.е. нет пересечений этих клякс, хотя это и не проблема). Т.е. заведомо наделить некий абстрактный объект геометрией не вариант - создавать полигон надо на лету. Кто может какие алгоритмы подсказать?
Да, забыл указать - область должна быть несколько шире входящих устройств.
Да, забыл указать - область должна быть несколько шире входящих устройств.
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Генерация полигона по набору хаотичных точек
диаграмма Вороного, пересеченная с буфером. Для тонких ценителей - еще и слияние объектов по типу. Для чисто картинки - снести на растр, сделать дистанционное преобразование, и отрисовать изолинии.rolan писал(а):Кто может какие алгоритмы подсказать?
-
- Новоприбывший
- Сообщения: 12
- Зарегистрирован: 10 дек 2011, 20:41
- Репутация: 0
Re: Генерация полигона по набору хаотичных точек
Ох и занятнейшую задачку вы мне подкинули )) Прочел одну статью на тему этой диаграммы, стало яснее. Спасибо! Но тема не закрыта, буду рад услышать еще вариантыgamm писал(а):диаграмма Вороного, пересеченная с буфером. Для тонких ценителей - еще и слияние объектов по типу. Для чисто картинки - снести на растр, сделать дистанционное преобразование, и отрисовать изолинии.rolan писал(а):Кто может какие алгоритмы подсказать?

-
- Активный участник
- Сообщения: 163
- Зарегистрирован: 28 июн 2012, 01:02
- Репутация: 84
- Откуда: Vladivostok
Re: Генерация полигона по набору хаотичных точек
Построить для каждой группы выпуклую оболочку (convex hull), и построить буфер на некоторое расстояние уже от нее. Будет гладко и "несколько шире" входящих точек. По сложности примерно то же самое, что и в предложении gamm. Но это лишь в случае, если вам подходят именно выпуклые "кляксы".
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Генерация полигона по набору хаотичных точек
да не вопрос - если точек достаточно много, сносим на раст, делаем оценку плотности, и опять строим изолинии или раскрашиваем растр - получаем общее представление о местах "концентрации" разнотипных устройств. Хорошо смотрится видео, если есть временные ряды, и данных много.rolan писал(а):Но тема не закрыта, буду рад услышать еще варианты
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Генерация полигона по набору хаотичных точек
придется делать еще и буфер - товарищъ хочет, чтобы область была несколько больше. Кроме выпуклости получим пересечения ...doujin писал(а):Построить для каждой группы выпуклую оболочку (convex hull), и построить буфер на некоторое расстояние уже от нее. Будет гладко и "несколько шире" входящих точек. По сложности примерно то же самое, что и в предложении gamm. Но это лишь в случае, если вам подходят именно выпуклые "кляксы".
-
- Новоприбывший
- Сообщения: 12
- Зарегистрирован: 10 дек 2011, 20:41
- Репутация: 0
Re: Генерация полигона по набору хаотичных точек
В целом победил.

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

С помощью алгоритма Грэхема получаю выпуклую оболочку, далее (на скриншоте нет) - от центра геометрии к вершинам - делаю отступы. А вот как теперь все это сгладить.. Пробовал кривую Безье - она отбрасывает часть точек, пришлось делать большИй отступ, чтоб проглотила все точки, но клякса настолько разрослась, что перекрытие с соседними более 50% площади. Нагуглил только интерполяцию сплайнами, и в частности заинтересовал сплайн Акима, пару часов с ним убил, пока тщетно - все примеры с графиками, а не обводка фигуры (ну с этим разберусь, считай только начал). Пишу в надежде, что кто-нибудь с подобным пересекался и посоветует как сгладить обводку.
-
- Гуру
- Сообщения: 810
- Зарегистрирован: 22 авг 2007, 14:58
- Репутация: 123
- Откуда: Казань
Re: Генерация полигона по набору хаотичных точек
Может, скользящим окном рассчитать плотность точек, а с плотностями можно много что сделать. И алгоритмы стандартные --- в любой приличной ГИС будут или руками легко пишутся.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей