Эй, мне сказали в предыдущем ответе, что для создания вогнутых фигур из нескольких выпуклых я делаю следующее:
Если у вас нет выпуклой оболочки, выполните алгоритм упаковки пакета
чтобы получить выпуклую границу, которая охватывает все ваши точки (опять же довольно
быстро). en.wikipedia.org/wiki/Gift_wrapping_algorithm
Выберите точку, которая находится на границе, в качестве начальной точки для алгоритма.
Теперь проходим через следующие точки, которые находятся на вашей фигуре,
но не на выпуклой границе.
Когда он найден, создайте новую фигуру с вершинами из
стартовая точка для найденной неграничной точки.
Наконец, установите начальную точку как найденную точку за пределами границы
Рекурсия теперь ваш друг: делайте точно такой же процесс на каждом новом
под-форму вы делаете.
Я запутался в одном, хотя. Что вы делаете, когда две вершины подряд находятся вне границы? Достигнув первой, вы подключаете к ней начальную точку, но затем сразу же начинаете повторять итерирование в другую внешнюю точку, оставляя вам только 2 вершины для работы: начальная точка и новая внешняя точка. Чего мне не хватает?
Чтобы проиллюстрировать мою проблему, вот форма, относящаяся к этой проблеме: Было бы здорово, если бы кто-то мог нарисовать все это и пройтись по шагам алгоритма, используя это. И используя точку 1 в качестве отправная точка.
Спасибо!