我有一组点,它们连接成一个在2D笛卡尔空间中的多边形。它是以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.0000000250000025, -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)]
这些点:
错误的顺序结果为:
正确连接方式:
是否有任何好的(如果可能)算法来重新排序点以获得正确的顺序?`