Описание
Программа принимает список двухмерных векторов, скажем, A, B, C .. и так далее.Одна перестановка этих векторов описывает многоугольник следующим образом:
- Начальная точка a = (0,0)
- Мы берем первый вектор (A) и строим линию [a; b] где b = a + A
- Мы берем следующий вектор (B) и строим линию [b; c], где c = b + B
- .. и т. д.пока у нас нет векторов
- Мы строим линию [z; a], где z - точка конца предыдущей строки (мы просто закрываем многоугольную цепочку)
Фон
Как правило, вся программа должна найти перестановку входного списка векторов, который описывает многоугольник с наибольшей площадью.Проблема в том, что упомянутые выше линии могут пересекаться.Кроме того, я выбрал формулу Shoelace (формула Гаусса), чтобы вычислить области, для чего требуется список упорядоченных вершин.Но я могу выбрать другой метод, если это необходимо.
Резюме
Итак, мне нужен алгоритм, который находит все вершины построенного многоугольника (с учетом пересечений) и упорядочивает его в правильном порядке для шнурка.формула или мне нужно другое решение.