У меня есть произвольное количество многоугольников (в данном случае шестиугольников), которые расположены случайным образом, но все они касаются другого шестиугольника.
Каждый гексагон имеет 6 вершин x, y. Вершины известны для всех гексов.
Может ли кто-нибудь указать мне на алгоритм, который объединит все гексы в один многоугольник? По сути, я просто ищу функцию, которая выделяет массив местоположений вершин, упорядоченных таким образом, что при рисовании линий от одной к другой она формирует многоугольник.
Это мой метод:
- Создайте массив всех вершин для всех гексов.
- Определите, сколько раз вершина встречается в массиве
- Если вершина находится в массиве 3+ раза, удалите вершины из массива.
- Если вершина находится в массиве 2 раза, удалите одну из них.
Однако следующий шаг непростой. Я использую холст для рисования этих многоугольников, что по сути включает рисование линии от одной вершины к другой. Поэтому порядок вершин в окончательном массиве важен. Его нельзя отсортировать произвольно.
Кроме того, я не ищу алгоритм «выпуклой оболочки», так как он не будет правильно рисовать многоугольник.
Есть ли какие-то функции, которые делают что-то подобное? На правильном ли я пути или есть более эффективный способ?