I have a collection of points that join to form a polygon in 2D cartesian space. It is in the form of a python list of tuples
[(x1, y1), (x2, y2), ... , (xn, yn)]
the problem is the join them and form a polygon in a graph. (I'm using matplotlib.path)
I made a function to do this. It works as follows:
it goes to first point ie (x1, y1) and joins a line to next point ie (x2, y2) and a line from (x2, y2) to (x3, y3) and so on .. till the end which is (xn, yn).
It closes the polygon by joining (xn, yn) to (x1, y1).
The problem is the list containing these points does not contain the points in the right order so that results in bad drawings like these(Every closed polygon is colored automatically).
Example:
for this list of vertices = `[(-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)]
The points:
Bad order of points results in:
Correct way to join:
Is there any good (and easy if possible) algorithm to reorder the points to correct order?
`
See Question&Answers more detail:
os