Мотивация.
Формы, заданные точками, которые вначале выбирают форму, напоминают мне концепцию альфа-формы и их связь с постоянной топологией. См. слайды для связанных изображений.
Так или иначе, альфа-формы имеют тесное отношение к диаграмме Вороного точек, которая является двойственной (в виде плоского графа) к триангуляции Делоне .
Решение.
Я предлагаю рассмотреть все узлы Вороного и взять узел с наибольшим радиусом просвета (расстояние до его определяющих точек) в качестве точки, которую вы ищете:
В двойной установке триангуляций Делоне этот узел соответствует треугольнику Делоне с наибольшей окружностью.
Это решение также мотивировано проблемой максимального вписанного круга в вычислительной геометрии.
Еще один способ взглянуть на это - интерпретация диаграмм Вороного при пожаре в траве: рассмотрим пожар в траве, начиная с каждой входной точки. Огонь растет в каждом направлении с удельной скоростью. Красная точка в середине - самая последняя из выпуклых оболочек.
Анализ и внедрение.
Временная сложность алгоритма составляет O (n log n) для диаграммы Вороного и O (n), чтобы найти узел Вороного с наибольшим клиренсом. Классическая реализация - qhull . Кажется, есть реализация C ++ в boost , которая сделает это за вас. Но любой код триангуляции Делоне тоже подойдет.
Возможные проблемы.
Если форма похожа на букву Омега, которая имеет большой карман, то узел Вороного с наибольшим зазором находится «вне» формы Омега. Следовательно, нужно было бы лучше понять понятие «внутри» и «снаружи» выбранной формы. Здесь снова может помочь изначально упомянутая альфа-форма, ср. опрос , проведенный Эдельсбруннером, который изобрел альфа-формы.