在c#中排列长顶点来形成一个多边形

本文关键字:多边形 一个 排列 顶点 | 更新日期: 2023-09-27 18:10:06

我有一个围绕中心点形成多边形的Lat长列表。我想顺时针获得latlong的有序列表,以便连接该有序列表中的latlong顶点并形成非凸多边形

在c#中排列长顶点来形成一个多边形

从一组顶点生成多边形是定义不清的,如下面的例子所示。

A = ( 0, 0)
B = ( 3,-3)
C = ( 6,-1)
D = ( 4,-1)
E = ( 4, 1)
F = ( 6, 1)
G = ( 3, 3)

顺时针形成多边形的一种可能性是

A-G-F-E-D-C-B-A

和排序

A-G-E-F-C-D-B-A

是另一个。第一个多边形是凹的,第二个多边形是凸的。如果去掉A,剩下的点在G-B轴上镜像,甚至可以从给定的顶点集定义两个非凸多边形。更准确地说,顶点的集合将是

B = ( 3,-3)
C = ( 6,-1)
D = ( 4,-1)
E = ( 4, 1)
F = ( 6, 1)
G = ( 3, 3)
E' = ( 2, 1)
F' = ( 0, 1)
D' = ( 2,-1)
C' = ( 0,-1)

和两个不同的多边形是

G-E-F-C-D-B-C'-D'-E'-F'-G

G-F-E-D-C-B-D'-C'-F'-E'-G .

然而,如果一个人对给定顶点的凸壳多边形(凸壳的边界)感兴趣,有许多不同的算法来计算它