У меня есть набор точек, которые соединяются, чтобы сформировать многоугольник в двумерном декартовом пространстве. Он находится в виде списка кортежей python
[(x1, y1), (x2, y2), ... , (xn, yn)]
проблема заключается в их объединении и формировании многоугольника в графе. (Я использую matplotlib.path)
Я сделал функцию для этого. Он работает следующим образом:
он переходит в первую точку, то есть (x1, y1), и соединяет линию с следующей точкой, то есть (x2, y2) и прямую от (x2, y2) до (x3, y3) и т.д. до конца который является (xn, yn). Он закрывает многоугольник, присоединяя (xn, yn) к (x1, y1).
Проблема заключается в том, что список, содержащий эти точки, не содержит точек в правильном порядке, так что приводит к таким плохим рисункам, как эти (каждый замкнутый многоугольник окрашивается автоматически).
Пример:
для этого списка вершин = `[(-0.500000050000005, -0,5), (-0,499999950000005, 0,5), (-0,500000100000005, -1,0), (-0,49999990000000505, 1,0), (0,500000050000005, -0,5), (- 1.000000250000025, -0,5), (1.0000000250000025, -0,5), (0,499999950000005, 0,5), (-0,9999999750000024, 0,5), (0,9999999750000024, 0,5), (0,500000100000005, -1,0), (0,49999990000000505, 1,0), (-1,0, 0,0), (-0,0, -1,0), (0,0, 1,0), (1,0, 0,0), (-0,500000050000005, -0,5)]
Точки:
Плохой порядок точек приводит к:
Правильный способ подключения:
Есть ли хороший (и простой, если возможно) алгоритм, чтобы изменить порядок точек на правильный порядок? `