排序坐标列表

Sort list of coordinates

我遇到以下问题: 我有一个多边形点的所有 x、y 坐标的列表。 我现在需要以这样一种方式对它们进行排序,以便在 顺时针顺序。

目前我有 6 个坐标可以绘制多边形,但顺序不对。

有人知道怎么做吗?

Input coordinates :

Coordinate: 506.6609866568262, 673.970398950142

Coordinate: 505.34898334317376, 682.8179210498581

Coordinate: 502.0723751660178, 680.523615304454

Coordinate: 534.3026433431738, 682.736131049858

Coordinate: 535.6146466568263, 673.8886089501419

Coordinate: 538.8912548339822, 676.1829146955461

Output coordinates :

Coordinate: 506.6609866568262, 673.970398950142

Coordinate: 502.0723751660178, 680.523615304454

Coordinate: 505.34898334317376, 682.8179210498581

Coordinate: 534.3026433431738, 682.736131049858

Coordinate: 538.8912548339822, 676.1829146955461

Coordinate: 535.6146466568263, 673.8886089501419

提前致谢,

使用极坐标:

  1. 找到多边形的内部点作为参考,例如 (c,d);
  2. 对多边形的每个顶点 (x,y) 使用 atan2(x-c, y-d) 以从该内点获取极角;然后
  3. 按你得到的角度排序。

如果多边形是凸面,则对 x 的最大值和最小值求平均值,对于 y 也同样如此,应该可以得到一个内点。否则,您还有更多工作要做。