У меня есть набор 2D точек, из которых я хочу сгенерировать многоугольник (или набор многоугольников), очерчивающий «форму» этих точек, , используя следующую концепцию :
Для каждой точки в наборе вычислите выпуклую оболочку всех точек в радиусе R этой точки. Сделав это для каждой точки, возьмите объединение этих выпуклых оболочек, чтобы получить окончательную форму.
Подход грубой силы к построению всех этих выпуклых оболочек - это что-то вроде O (N ^ 2 + R ^ 2 log R). Есть ли известный, более эффективный алгоритм для получения того же результата? Или, возможно, другой способ выражения проблемы?
Примечание: я знаю об альфа-формах, они разные; Я ищу алгоритм для выполнения того, что описано выше.
Следующее решение не работает - экспериментально опровергнуто в MATLAB.
Обновление: у меня есть предложенное решение.
Предложение: возьмите триангуляцию Делоне из набора точек, удалите все треугольники, у которых окружность лучей больше R. Затем возьмите объединение оставшихся треугольников.