У меня есть набор двумерных точек, из которых я хочу создать многоугольник (или набор полигонов), в котором изложена «форма» этих точек, , используя следующую концепцию :Быстрый алгоритм для вычисления объединения «локальных выпуклых оболочек»
Для каждой точки множества вычислим выпуклую оболочку всех точек радиуса R этой точки. Сделав это для каждой точки, возьмите объединение этих выпуклых оболочек, чтобы получить окончательную форму.
Подход грубой силы при фактическом построении всех этих выпуклых оболочек является чем-то вроде O (N^2 + R^2 log R). Известен ли более эффективный алгоритм для получения того же результата? Или, возможно, другой способ выразить проблему?
Примечание: Я знаю альфа-формы, они разные; Я ищу алгоритм для выполнения описанного выше.
Следующее решение не работает - экспериментально опровергнуто в MATLAB.
Обновление: у меня есть предлагаемое решение.
Предложение: принять триангуляцию Деланея множества точек, удалить все треугольники, имеющие окружность больше R. Затем возьмем объединение оставшихся треугольников.
Я не уверен, чего вы пытаетесь достичь. Является ли это невыпуклой оболочкой, представляющей форму точечного облака лучше выпуклой? –
Да, это правильно. Немного похоже на альфа-формы: http://www.cgal.org/Manual/3.4/doc_html/cgal_manual/Alpha_shapes_2/Chapter_main.html. За исключением того, что мой метод дает визуально более приятные результаты (IMO) для данных, с которыми я работаю. – James